在没有@Repository实现的情况下使用@NoRepositoryBean运行Spring集成测试

时间:2019-07-10 17:05:20

标签: java spring-boot spring-test

我遇到的情况是我有几个模块,而主要模块与数据存储区无关。有一些子模块依赖于主模块以及JPA和Mongo的存储库实现。

  • Core-Module-所有业务逻辑,@NoRepositoryBean接口
  • Core-Mongo-依赖于Core-Module和Mongo存储库/域
  • Core-JPA-取决于具有JPA存储库/域的Core-Module

本质上,我想做的是在Core-Module中进行集成测试,使用H2数据库执行测试,而不依赖于@Repository的实现。

我意识到我可以制作仅测试的@Repository接口,这也许是我必须走的路,但是我想知道是否有更简单的方法。本质上,是否有一种方法可以在测试中“实例化” @NoRepositoryBean或其他一些无需声明仅测试存储库的简单方法?

1 个答案:

答案 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);
  }