Java Spring引导:如何在测试中添加Spring数据存储库
在测试中,我可以添加任何bean(使用静态嵌套配置类)。但是如何添加spring数据存储库呢?我不能作为新bean返回,因为我不能实例化它们——它们是接口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
@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(..)
您是只测试一个类(单元测试),还是组合测试几个类(功能测试)?我的计划是测试几个存储库