无法将 main 的 @Configuration 的 @Bean 自动装配到测试 @Component 中
Cannot autowire main's @Configuration's @Bean into a test @Component
设置可能看起来很奇怪,因为它是来自多模块项目中的公共模块的代码,所以它在 main 中没有应用程序,但它在测试中有以测试可重用组件。就像:
/src/main/java/my.domain.mypackage.ApplicationConfiguration.java
@Configuration
public class ApplicationConfiguration {
@Bean
public MyService myService(){
return MyService();
}
}
/src/test/java/TestApplication.java
@SpringBootApplication
public class TestApplication {}
/src/test/java/my.domain.util.TestHelper.java
@Component
public class TestHelper {
@Autowired
private MyService myService;
}
/src/test/java/my.domain.mypackage.MyTest.java
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("test")
public class MyTest {
@Autowired
private TestHelper testHelper;
@Test
public void test(){
//Do something with testHelper
}
}
发生的情况是,当测试运行时,它尝试实例化 TestHelper,并且由于某种原因,ApplicationConfiguration 中的某些依赖项尚不可用(TestHelper 上没有类型为 MyService 的合格 bean)。
会是什么原因?我已经尝试使用@Import、@DependsOn,但它不起作用,而且我确信它是我设计中的错误或基本错误
需要在ApplicationConfiguration.javaclass的顶部添加@Configuration注解。
设置可能看起来很奇怪,因为它是来自多模块项目中的公共模块的代码,所以它在 main 中没有应用程序,但它在测试中有以测试可重用组件。就像:
/src/main/java/my.domain.mypackage.ApplicationConfiguration.java
@Configuration
public class ApplicationConfiguration {
@Bean
public MyService myService(){
return MyService();
}
}
/src/test/java/TestApplication.java
@SpringBootApplication
public class TestApplication {}
/src/test/java/my.domain.util.TestHelper.java
@Component
public class TestHelper {
@Autowired
private MyService myService;
}
/src/test/java/my.domain.mypackage.MyTest.java
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("test")
public class MyTest {
@Autowired
private TestHelper testHelper;
@Test
public void test(){
//Do something with testHelper
}
}
发生的情况是,当测试运行时,它尝试实例化 TestHelper,并且由于某种原因,ApplicationConfiguration 中的某些依赖项尚不可用(TestHelper 上没有类型为 MyService 的合格 bean)。
会是什么原因?我已经尝试使用@Import、@DependsOn,但它不起作用,而且我确信它是我设计中的错误或基本错误
需要在ApplicationConfiguration.javaclass的顶部添加@Configuration注解。