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

标签 java spring-boot spring-test

我有一些模块,主要模块与数据存储无关。有一些子模块依赖于具有 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/

相关文章:

java - 如何在控制台应用程序中监听键盘事件

java - Spring Boot ArrayList/JSON : add all Elements of a certain type to a list of this type

java - 如何对 Spring @Bean CommandLineRunner 进行单元测试?

java - 在单独的注释中测试配置注释

java - 我可以否定(!) Spring 配置文件的集合吗?

java - 在 Spring Boot 中使用 @TestPropertySource 覆盖 @PropertySource

java - "ResourceBundle"整个文件?

java - 2D矩阵实现

java - 为什么a=a++;不改变 a 的值

java - 如何序列化包含 LAZY 关联的 json