java - Spring 启动: Testing a service with Constructor Dependency Injection

标签 java spring spring-boot dependency-injection junit4

我有一个 SpringBoot 应用程序(REST 架构) 我定义了使用构造函数依赖注入(inject)的服务

@Service
@Slf4j
public class HostelService {

    private final HostelRepository hostelRepository;

    HostelService(HostelRepository hostelRepository) {
        this.hostelRepository = hostelRepository;
    }
}

我想在集成测试中使用它:

@RunWith(SpringRunner.class)
@SpringBootTest
public class HostelServiceIntegrationTest {

    public static final String Hostel_1 = "Hostel::1";

    @Autowired
    protected HostelRepository hostelRepository;

    @Autowired
    private HostelService hostelService;


    //...
}

@Repository
public interface HostelRepository extends CouchbaseRepository<Hostel, String> {

}

但是我有这个错误:

..Unsatisfied dependency expressed through constructor parameter 0;

原因:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'io.clouding.repository.HostelRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

在应用程序上:

@SpringCloudApplication
@SpringBootApplication
@EnableJpaRepositories("io.clouding.repository")
@ComponentScan(basePackages = { "io.clouding.repository" })
public class Application implements WebMvcConfigurer {
..
}

最佳答案

我希望你的问题是你的 bean HostelRespository 没有被创建。它是一个 CouchbaseRepository。我希望它甚至不是在非测试环境中创建的。

你要做的是,代替

@EnableJpaRepositories("io.clouding.repository")

添加

@EnableCouchbaseRepositories(basePackages = {"io.clouding.repository"})

这将有助于运行时为您创建 bean。所以你的具体问题将得到解决。

注意:

请注意,如果您还没有配置 spring-data-couchbase 所需的底层配置,您可能会在修复此问题后看到一些其他错误,您必须通过配置来修复。可以引用this .

关于java - Spring 启动: Testing a service with Constructor Dependency Injection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58220236/

相关文章:

java - 特里数据结构 - Java

java - 线程 "main"java.lang.Error 中出现异常 LUCENE

java - 对集合的所有元素断言相同的条件

java - 设置安卓热点 channel

java - 部分方法的Spring和同步

spring - 使用 Spring-Boot 启动 Tomcat 上下文时出错 : java. lang.ClassNotFoundException : org. apache.tomcat.dbcp.dbcp.BasicDataSource

java - Spring Security 无状态暴力保护防止凭证猜测

spring - 在 Spring Cloud 配置客户端之间共享配置

java - 如何在 Spring Boot 中正确创建非持久存储库?

java - Spring + Thymeleaf 验证动态生成的字段