我有一个简单的Spring引导应用程序结构如下春季启动应用程序的测试策略建议
src/main/java
com
+- example
+- myproject
+- Application.java
|
+- config
| +- SpringConfig.java
|
+- service
| +- DBService.java
src/main/test
com
+- example
+- myproject
+- config
| +- MyTestRoot.java
src/test/resources
applicationContext-test.xml
Application.java标注有
@SpringBootApplication
@EnableJms
@ComponentScan
@EnableTransactionManagement
@EnableAutoConfiguration
SpringConfig.java标注有@Configuration并具有方法返回DBService的一个新实例。该方法用@Bean注释
@Bean
public DBService dbService() {
return new DBService();
}
DBService类具有自动装入的存储库。这些存储库来自另一个项目依赖项,并提供与RDBMS/Data Store的连接。
我定义的的applicationContext-的test.xml
<bean id="dbService" class="com.path.to.class.in.dependency"/>
豆当我在我的测试类的自动装配dbService,我得到一个错误“错误与名制作豆‘dbServices’:自动装配Autowired依赖注入失败;”
我在做什么错在这里?我使用的是spring boot 1.3.5,不能使用@SpringBootTest注释,因为它可以从1.4开始使用。任何帮助都感激不尽。
编辑: 由于依次DbService类是指仓库类(userRepositoty,customerRepository等等),我试图在测试方面的文件也定义豆的仓库。但是,我在DbService类(Main)中注入的存储库是接口,而Spring Boot框架会在运行时自动解析我的实际实现。我不确定如何在测试环境中执行此操作。
@Maciej,谢谢你的回答,但这是我目前的问题。我的主要自动装载存储库中的“DbService”被定义为接口。在运行时,Spring/Spring Boot自动为我提供了我的项目依赖关系中的那些接口的实现。我试图在我的测试类“MyTestRoot”中注入“DbService”,我无法知道如何告诉spring在运行单元测试时获取存储库的具体实现。它会抛出一个错误:'code'创建名为'dbServices'的bean时出错:注入自动装载的依赖关系失败'代码' –
更新您的测试类的问题。我想你可能错过了那里的一些东西。 –