考虑以下集成测试注释:
WorkestTestConfig 的作用是在集成启动期间覆盖真实的 bean 或一组 beans,每当我使用
WorkerTestConfig 本身尽可能简单:
请问有人能解释一下@SpringBootTest注解的另一个神奇行为吗?如果您能重现相同的行为,请确认一下,这样我就可以去问题追踪器了,因为我在stackoverflow上看到有人在使用@Import和@SpringBootTest,而且在spring boot文档中也没有禁止这样做:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications-excluding-config 完全不知道发生了什么。
版本:2.1.2.RELEASE
更新:
还尝试过删除真实的bean,以查看问题是否仅出现在覆盖方面,但是@Import注解根本无法工作 -> 甚至无法创建bean,@ContextConfiguration具有添加/覆盖行为,导入根本不起作用。 注解的完全限定导入为: import org.springframework.context.annotation.Import;
还尝试将@TestConfiguration更改为@Configuration,只是为了尝试,但仍然没有任何作用。无效。
更新2: < p> 注意:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE,
properties = "spring.main.allow-bean-definition-overriding=true")
@ContextConfiguration(classes = {WorkerTestConfig.class})
//@Import(value = {WorkerTestConfig.class})
@ActiveProfiles({"dev","test"})
public class NumberServiceITest {
WorkestTestConfig 的作用是在集成启动期间覆盖真实的 bean 或一组 beans,每当我使用
@ContextConfiguration
时,真实的 bean 就会退出,使用来自 WorkerTestConfig 的 bean;每当我使用 @Import
时,真实的 bean 仍然会被创建并使测试失败。WorkerTestConfig 本身尽可能简单:
@TestConfiguration
public class WorkerTestConfig {
@Primary
@Bean
public ScheduledExecutorService taskExecutor() {
return DirectExecutorFactory.createSameThreadExecutor();
}
}
请问有人能解释一下@SpringBootTest注解的另一个神奇行为吗?如果您能重现相同的行为,请确认一下,这样我就可以去问题追踪器了,因为我在stackoverflow上看到有人在使用@Import和@SpringBootTest,而且在spring boot文档中也没有禁止这样做:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications-excluding-config 完全不知道发生了什么。
版本:2.1.2.RELEASE
更新:
还尝试过删除真实的bean,以查看问题是否仅出现在覆盖方面,但是@Import注解根本无法工作 -> 甚至无法创建bean,@ContextConfiguration具有添加/覆盖行为,导入根本不起作用。 注解的完全限定导入为: import org.springframework.context.annotation.Import;
还尝试将@TestConfiguration更改为@Configuration,只是为了尝试,但仍然没有任何作用。无效。
更新2: < p> 注意:
然而,@Import
在标准的Spring测试中可正常工作:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {Some.class,
Some2WhichDependsOnWorkerTestConfig.class})
@Import(WorkerTestConfig.class)
@ActiveProfiles("test")
public class SomeOtherTest {
@Import(MyTestsConfiguration.class)
中的MyTestsConfiguration
是一个被@TestConfiguration
注解标记的类。 - undefined@TestConfiguration
类上使用@Import
会导致导入类中的bean被定义。请您更新问题,包含一个最小、完整且可验证的示例。 - undefined