我有一个关于Spring Data 的问题- MongoDB和JUnit测试。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = { UserRepository.class, User.class })
public class MyJUnitTest {
UserRepository如下所示:
@Repository
public interface UserRepository extends MongoRepository<User, String> {
User findByUsername(final String username);
}
出现以下异常:
无法示例化[....存储库.用户存储库]:指定的类是接口
我现在的问题是,如何实现UserRepository的示例化,尽管没有实现类,因为SpringData是自己实现的?如果我不使用@Repository标记UserRepository,那么Spring就不会创建bean对象
[编辑]
我已经尝试了你发布的链接的例子,如果我在main方法上运行应用程序,它工作得很好。然后我试图实现一个测试类,但在这个例子中,我得到了同样的异常:
创建名为“hello.test. TestClass”的Bean时出错:插入自动连接的依赖项失败;嵌套的异常是一个嵌套的异常。无法自动连接字段:私有hello.客户存储库hello.测试.测试类.存储库;嵌套异常是一个嵌套的异常。没有这样的Bean定义异常:未找到以下依赖关系的[hello.CustomerRepository]类型的合格Bean:至少应有1个符合此依赖关系的自动连接候选项的Bean。依赖关系注解:{@org.springframework.beans.工厂.注解.自动连接(必需=true)}
我的测试类在src/test/java/hello/test中看起来像这样(hello.test是包):
@ComponentScan("hello")
@EnableMongoRepositories(basePackages = "hello")
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = { CustomerRepository.class, Customer.class })
public class TestClass {
@Autowired
private CustomerRepository repository;
@Test
public void testMethod() {
System.out.println("repositoryd: " + repository);
}
}
我的CustomerRepository看起来像这样(带有@Configuration注解):
@Configuration
public interface CustomerRepository extends MongoRepository<Customer, String> {
public Customer findByFirstName(String firstName);
public List<Customer> findByLastName(String lastName);
}
实际上,我不知道我需要哪些注解来运行测试-也许你会有另一个建议,以便我可以解决这个问题。
4条答案
按热度按时间kx1ctssn1#
如果使用junit5,并且希望以尽可能轻量级的方式启动Spring,则需要在IntegrationTest类上使用以下注解
9avjhtql2#
适用于Spring Boot子
1.5.8.RELEASE
您可以使用
@SpringBootTest
引导所有Spring配置。您的测试将类似于
当然,您希望使用嵌入式mongodb进行测试,因此添加
for Maven
for Gradle
kmbjn2e33#
您的repo
CustomerRepository
不需要@Configuration
或@Repository
注解,Spring会在您扩展基本Repository类时为您做这件事。要设置Mongo存储库,您需要使用以下注解扩展
ApplicationContext
。您还希望使用内存中的数据库进行单元/集成测试,这样它们就不会更改产品数据库。
要启用它,只需添加以下依赖项:
最后,使用
ApplicationContext
配置测试类rjzwgtxy4#
在
@SpringApplicationConfiguration
中,你需要指向一个配置类。我假设UserRepository
和User
都不是。要开始了解Spring和Spring Data MongoDB的基础知识,请务必查看this getting started guide。