java – 在Integration测试中覆盖bean
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在Integration测试中覆盖bean,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1755字,纯文字阅读大概需要3分钟。
内容图文
![java – 在Integration测试中覆盖bean](/upload/InfoBanner/zyjiaocheng/706/450f60a9ad7b418e9bcc3240524181d9.jpg)
对于我的Spring-Boot应用程序,我通过@Configuration文件提供了RestTemplate,因此我可以添加合理的默认值(ex Timeouts).对于我的集成测试,我想模拟RestTemplate,因为我不想连接到外部服务 – 我知道期望的响应.我尝试在集成测试包中提供不同的实现,希望后者将覆盖实际的实现,但是反过来检查日志:真正的实现覆盖了测试.如何确保TestConfig中的那个是使用的?
这是我的配置文件:
@Configuration
public class RestTemplateProvider {
private static final int DEFAULT_SERVICE_TIMEOUT = 5_000;
@Bean
public RestTemplate restTemplate(){
return new RestTemplate(buildClientConfigurationFactory());
}
private ClientHttpRequestFactory buildClientConfigurationFactory() {
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setReadTimeout(DEFAULT_SERVICE_TIMEOUT);
factory.setConnectTimeout(DEFAULT_SERVICE_TIMEOUT);
return factory;
}
}
整合测试:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TestConfiguration.class)
@WebAppConfiguration
@ActiveProfiles("it")
public abstract class IntegrationTest {}
TestConfiguration类:
@Configuration
@Import({Application.class, MockRestTemplateConfiguration.class})
public class TestConfiguration {}
最后是MockRestTemplateConfiguration
@Configuration
public class MockRestTemplateConfiguration {
@Bean
public RestTemplate restTemplate() {
return Mockito.mock(RestTemplate.class)
}
}
解决方法:
从Spring Boot 1.4.x开始,有一个选项可以使用@MockBean批注来伪造Spring bean.
对评论的反应:
要保持缓存中的上下文不使用@DirtiesContext,但使用@ContextConfiguration(name =“contextWithFakeBean”)并且它将创建单独的上下文,同时它将在缓存中保留默认上下文. Spring会在缓存中保留两者(或者你有多少个上下文).
我们的构建就是这种方式,大多数测试都使用默认的非堆积配置,但是我们有4-5个假冒豆类测试.默认上下文很好地重用
内容总结
以上是互联网集市为您收集整理的java – 在Integration测试中覆盖bean全部内容,希望文章能够帮你解决java – 在Integration测试中覆盖bean所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。