无法将主电源的@Configuration@Bean自动连接到测试@Component



设置可能看起来很奇怪,因为它是来自多模块项目中的公共模块的代码,所以它主要没有应用程序,但为了测试可重用组件,它正在测试中。它就像:

/src/main/java/my.main.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.main.util.TestHelper.java

@Component
public class TestHelper {
@Autowired
private MyService myService;
}

/src/test/java/my.main.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.java类的顶部添加@Configuration注释。

最新更新