gpt4 book ai didi

java - 如何限制内部测试@Configuration类仅适用于此类?

转载 作者:行者123 更新时间:2023-11-30 02:06:35 26 4
gpt4 key购买 nike

用于集成测试的基本测试类通过组件扫描导入基本配置,其中包括几乎所有包。在一个测试类中,我想用 Mocs 覆盖一些 bean,但会扫描此内部配置并覆盖所有测试的 bean。有什么办法可以避免这种情况吗?

最佳答案

我发现了我喜欢模拟bean的方式,本质上是有一个单独的MockObjectsConfig类,其中包含我想要使用标准Spring上下文配置的模拟对象,然后将其与我的真实测试配置一起导入。如果需要防止冲突,您还可以使用 @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。

关于java - 如何限制内部测试@Configuration类仅适用于此类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51154813/

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