依赖注入在Spring启动测试中不起作用,但在正常开发中起作用

时间:2017-04-04 08:10:47

标签: dependency-injection spring-boot-test

我开始开发一个经典的Spring Boot MVC应用程序。我使用依赖注入(使用@Service@Autowired注释)没有任何问题。

当我尝试使用依赖注入运行某些集成测试时,我从Junit收到以下错误消息:

  

org.springframework.beans.factory.UnsatisfiedDependencyException:   创建名为'hu.bookandwalk.RepositoryTests'的bean时出错:   通过字段'userService'表示的不满意的依赖;嵌套   例外是   org.springframework.beans.factory.NoSuchBeanDefinitionException:没有   'hu.bookandwalk.services.UserService'类型的限定bean   可用:预计至少有1个符合autowire资格的bean   候选人。依赖注释:   {@ org.springframework.beans.factory.annotation.Autowired(所需=真)}

测试代码的相关部分:

package hu.bookandwalk;

...

import hu.bookandwalk.config.MyNeo4jConfig;
import hu.bookandwalk.domain.*;
import hu.bookandwalk.services.*;

@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
@ContextConfiguration(classes={MyNeo4jConfig.class})
public class RepositoryTests {

    @Autowired
    Session session;

    @Autowired
    UserService userService;
...

}

hu.bookandwalk.services包中,我有一个没有注释的UserService界面和一个用UserServiceImpl注释的@Service类。

我不明白,如果DI适用于运行我的应用程序而不是它在测试中不起作用的原因。不知怎的,春天启动时没有发现我带注释的实现类,因为错误消息说明了。

测试与我的应用程序类位于同一个包中:hu.bookandwalk 我的所有服务,存储库和域都位于以下位置:hu.bookandwalk.serviceshu.bookandwalk.domain,...

知道测试课让我发现userServiceImpl可以发现什么样的注释?

1 个答案:

答案 0 :(得分:3)

尝试在@font-face

中插入UserServiceImpl.class