3

我开始开发经典的 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 个有资格作为自动装配候选者的 bean。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

测试代码的相关部分:

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 是否适用于运行我的应用程序,而不是为什么它在测试中不起作用。正如错误消息所说,spring boot 不知何故没有发现我的带注释的实现类。

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

知道我想念什么样的注释来让测试类被userServiceImpl发现吗?

4

1 回答 1

3

尝试UserServiceImpl.class插入@ContextConfiguration

于 2017-04-05T16:51:54.640 回答