java - 无法将 main 的 @Configuration 的 @Bean 自动装配到测试 @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.java 类的顶部添加 @Configuration 注释。
推荐阅读
- python-3.x - 有人可以指导我如何使用 python 在选项卡中收集 url 地址列表吗?
- avro - 使用记录类型时,Avro 模式获取未定义的类型名称
- excel - 如何消除 VBA 中未定义的子或函数错误
- typescript - 从 item.response 中获取值
- julia - Julia:提取聚类索引
- python-3.x - 如何使用 PLY 在解析器中实现循环依赖语法结构
- python - 将参数传递给 groupby 聚合熊猫中的函数
- xml - 未知请求,在计数 9 中创建分类帐时无法处理
- java - 类型参数中的检查器框架不兼容类型
- cypress - 如何在柏树中迭代网页元素?