我遇到的情况是我有几个模块,而主要模块与数据存储区无关。有一些子模块依赖于主模块以及JPA和Mongo的存储库实现。
Core-Module
-所有业务逻辑,@NoRepositoryBean
接口Core-Mongo
-依赖于Core-Module
和Mongo存储库/域Core-JPA
-取决于具有JPA存储库/域的Core-Module
本质上,我想做的是在Core-Module
中进行集成测试,使用H2数据库执行测试,而不依赖于@Repository
的实现。
我意识到我可以制作仅测试的@Repository
接口,这也许是我必须走的路,但是我想知道是否有更简单的方法。本质上,是否有一种方法可以在测试中“实例化” @NoRepositoryBean
或其他一些无需声明仅测试存储库的简单方法?
答案 0 :(得分:0)
我刚刚检查了这个兴趣问题。我在测试项目UserRepository
中用@NoRepositoryBean
进行了标记,之后在测试中我无法对其进行自动接线。但是在文档spring-docs中,我发现了Java创建存储库过程描述,并且它的工作原理很完美。在测试之前,创建所需的存储库。
测试代码示例:
private UserRepository userRepository;
@Autowired
private EntityManager entityManager;
@Before
public void init() {
JpaRepositoryFactory factory = new JpaRepositoryFactory(entityManager);
userRepository = factory.getRepository(UserRepository.class);
}