spi*_*ike 9 configuration spring config
是否有可能从Spring配置中替换单个bean或值进行一个或多个集成测试?
就我而言,我有配置
@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackages = {"foo.bar"})
public class MyIntegrationTestConfig {
// everything done by component scan
}
Run Code Online (Sandbox Code Playgroud)
哪个用于我的集成测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyIntegrationTestConfig.class, loader = SpringApplicationContextLoader.class)
public class MyIntegrationTest {
// do the tests
}
Run Code Online (Sandbox Code Playgroud)
现在我想要进行第二组集成测试,其中我用一个不同的bean替换一个bean.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyIntegrationTestConfig.class, loader = SpringApplicationContextLoader.class)
public class MySpecialIntegrationTest {
// influence the context configuration such that a bean different from the primary is loaded
// do the tests using the 'overwritten' bean
}
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最简单方法是什么?
nob*_*beh 10
Spring测试框架能够理解扩展配置.这意味着你只需要扩展MySpecialIntegrationTest来自MyIntegrationTest:
@ContextConfiguration(classes = MySpecialIntegrationTestConfig.class, loader = SpringApplicationContextLoader.class)
public class MySpecialIntegrationTest extends MyIntegrationTest {
@Configuration
public static class MySpecialIntegrationTestConfig {
@Bean
public MyBean theBean() {}
}
}
Run Code Online (Sandbox Code Playgroud)
并创建必要的Java Config类并提供它@ContextConfiguration.Spring将加载基础并将其扩展为您专门用于扩展测试用例的基础.
有关进一步的讨论,请参阅官方文档.
| 归档时间: |
|
| 查看次数: |
14858 次 |
| 最近记录: |