Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导:如何在测试中添加Spring数据存储库_Java_Spring_Spring Boot_Spring Data_Spring Data Mongodb - Fatal编程技术网

Java Spring引导:如何在测试中添加Spring数据存储库

Java Spring引导:如何在测试中添加Spring数据存储库,java,spring,spring-boot,spring-data,spring-data-mongodb,Java,Spring,Spring Boot,Spring Data,Spring Data Mongodb,在测试中,我可以添加任何bean(使用静态嵌套配置类)。但是如何添加spring数据存储库呢?我不能作为新bean返回,因为我不能实例化它们——它们是接口 @RunWith(SpringRunner.class) @DataMongoTest //@SpringBootTest // or this annotation public class JTest { @Configuration static class Config { static cla

在测试中,我可以添加任何bean(使用静态嵌套配置类)。但是如何添加spring数据存储库呢?我不能作为新bean返回,因为我不能实例化它们——它们是接口

@RunWith(SpringRunner.class)
@DataMongoTest
//@SpringBootTest   // or this annotation
public class JTest {

    @Configuration
    static class Config {

        static class TestEntity {
            String id;
        }

        interface TestRepository extends ReactiveMongoRepository<TestEntity, String> {}

    }

    @Autowired Config.TestRepository testRepository;

    @Test
    public void test() {}
}
@RunWith(SpringRunner.class)
@DataMongoTest
//@SpringBootTest//或此注释
公共类JTest{
@配置
静态类配置{
静态类测试性{
字符串id;
}
接口测试存储库扩展了ReactiveMongoRespository{}
}
@Autowired Config.TestRepository TestRepository;
@试验
公共无效测试(){}
}
使用
@DataMongoTest
运行

原因:java.lang.IllegalStateException:无法检索@EnableAutoConfiguration基本包

使用
@SpringBootTest
运行时,将提供:

原因:org.springframework.beans.factory.NoSuchBean定义异常:没有可用的“xxx.JTest$Config$TestRepository”类型的合格bean:至少需要1个符合autowire候选条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}


如何在测试中添加新的存储库?

默认情况下,Spring不会选择嵌套接口存储库(并实例化bean)。要启用,请参阅:

@RunWith(SpringRunner.class)
@DataMongoTest
@EnableMongoRepositories(considerNestedRepositories = true)
public class JobTest {

    @TestConfiguration
    static class Config {

        static class TestEntity {
            String id;
        }
    ....
在内部,Spring向
新SimpleMongoRepository(..)
注册一个bean(如果没有指定其他变量)

编辑
刚刚意识到你正在使用反应式Mongo。因此,改用
启用ReactiveMongorPositories(..)

您是只测试一个类(单元测试),还是组合测试几个类(功能测试)?我的计划是测试几个存储库