我有一些模块,主要模块与数据存储无关。有一些子模块依赖于具有 JPA 和 Mongo 存储库实现的主模块。
Core-Module
- 所有业务逻辑,@NoRepositoryBean
接口(interface)Core-Mongo
- 依赖于带有 Mongo 存储库/域的Core-Module
Core-JPA
- 依赖于具有 JPA 存储库/域的Core-Module
本质上,我想做的是在 Core-Module
中进行集成测试,使用 H2 数据库来执行测试,而不是依赖于 @Repository
实现。
我意识到我可以制作仅测试的@Repository
接口(interface),这可能是我必须走的路,但我想知道是否有更简单的方法。本质上,是否有一种方法可以在测试中“实例化”@NoRepositoryBean
或无需声明仅测试存储库的其他一些简单方法?
最佳答案
我刚刚检查了这个兴趣问题。我在我的测试项目 UserRepository
中标记了 @NoRepositoryBean
,之后在测试中我无法 Autowiring 它。但是在文档中 spring-docs我找到了 java creation repositories process description,它工作得很好。在测试之前创建所需的存储库。
一段测试代码示例:
private UserRepository userRepository;
@Autowired
private EntityManager entityManager;
@Before
public void init() {
JpaRepositoryFactory factory = new JpaRepositoryFactory(entityManager);
userRepository = factory.getRepository(UserRepository.class);
}
关于java - 在没有@Repository 实现的情况下使用@NoRepositoryBean 运行 Spring 集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56975495/