java - 如何限制内部测试@Configuration 类仅适用于该类?
问题描述
用于集成测试的基本测试类通过包含几乎所有包的组件扫描导入基本配置。在一个测试类中,我想用 Mocs 覆盖一些 bean,但是这个内部配置会被扫描并覆盖所有测试的 bean。有什么办法可以避免这种情况吗?
解决方案
我找到了我喜欢MockObjectsConfig
使用标准 Spring 上下文配置的模拟对象的单独类,然后将它与我的真实测试配置一起导入,从而找到了我喜欢模拟 bean 的方式。如果您需要防止那里发生冲突,您还可以使用@Profile
和测试您的模拟 bean 。@ActiveProfiles
@Configuration
@Profile("!test")
public class MyRealConfigClass {
@Bean
public YetAnotherClass yetAnotherClass() {
return new YetAnotherClass();
}
}
@Configuration
@Profile("test")
public class MockObjectsConfig {
@Bean
public YetAnotherClass yetAnotherClass() {
Mockito.mock(YetAnotherClass.class); // and add any thenReturns, answers, etc. here
}
}
然后将其包含在您的测试中,如下所示:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = { MyRealConfigClass.class, MockObjectsConfig.class)
@ActiveProfiles({"test"})
public class MyJunitTest {
@Autowired
private RestController restController;
}
然后将使用您的模拟 bean,而不是生产配置中的真实 bean。
推荐阅读
- swift - 迅速; 从未使用过不可变值的初始化
- python - Redhat Apache测试页面显示而不是app,tcpdump+wget什么都不返回
- python - Selenium/Python - “如果不是”语句后跟 navigator.find_element
- python - Python pyodbc,如何返回sql控制台信息
- java - 在java中传递bigdecimal数字
- multithreading - 如何在 mac os x 中从 MXNET 获得充分的 cpu 利用率?
- java - Nashorn java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/JSObject
- java - 使用 OpenCV 进行 Java 字符识别
- google-api - Google Drive API 中是否有一个函数来获取文件是否已下载或打开
- jsf - ADF af:查询“重置”上的重置表