gpt4 book ai didi

spring - 覆盖基于Java的Spring Context配置以进行测试

转载 作者:行者123 更新时间:2023-12-04 03:51:57 26 4
gpt4 key购买 nike

是否可以在一个或多个集成测试中替换Spring配置中的单个bean或值?

就我而言,我有配置

@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackages = {"foo.bar"})
public class MyIntegrationTestConfig {
// everything done by component scan
}

哪个用于我的集成测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyIntegrationTestConfig.class, loader = SpringApplicationContextLoader.class)
public class MyIntegrationTest {
// do the tests
}

现在,我要进行第二组集成测试,在该测试中,我将一个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
}

实现此目的的最简单方法是什么?

最佳答案

Spring测试框架能够理解配置的扩展。这意味着您只需要从MySpecialIntegrationTest扩展MyIntegrationTest:

@ContextConfiguration(classes = MySpecialIntegrationTestConfig.class, loader = SpringApplicationContextLoader.class)
public class MySpecialIntegrationTest extends MyIntegrationTest {

@Configuration
public static class MySpecialIntegrationTestConfig {
@Bean
public MyBean theBean() {}
}

}

并创建必要的Java Config类,并将其提供给 @ContextConfiguration。 Spring将加载基础的基础,并使用您在扩展测试用例中专门研究的基础进行扩展。

请引用 official documentation进行进一步的讨论。

关于spring - 覆盖基于Java的Spring Context配置以进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21237766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com