Micronaut-Data JDBC-用于测试和生产的多种方言

问题描述 投票:0回答:1

JDBC repositories上的Mirconaut文档清楚地告诉我们,我们必须创建一个测试库来针对另一种方言进行测试。我认为这是可以管理的(例如,用于生产的Postgres和用于测试的H2)。

问题是我必须在测试存储库中重复我的方法(例如find())。我有一个书库和一个测试库:

@JdbcRepository(dialect = Dialect.POSTGRES)
interface BookRepository extends CrudRepository<Book, Long> {
  Optional<Book> find(String title);
}

@JdbcRepository(dialect = Dialect.H2)
@Replaces(bean = BookRepository)
@Requires(env = ["test"])
interface TestBookRepository extends BookRepository {
  // Optional<Book> find(String title);
  // Required to make the find() method appear in the TestBookRepository
}

为了使find()方法在TestBookRepository中可用,我不得不重复该方法(请参见上面的注释行)。

是否有避免重复自己的更好方法? CrudRepository界面中的方法可以在TestBookRepository中使用,而不会出现问题。为什么find()方法不一样?

BTW,我不想模拟测试库。我想针对SQL数据库测试Micronaut-Data注入的存储库“逻辑”。

jdbc micronaut micronaut-data
1个回答
0
投票

您可以利用Micronaut环境为测试和生产创建不同的环境配置并在application-test.yml中配置相应的数据源配置并使用该数据源进行测试

Micronaut Environments from docs

© www.soinside.com 2019 - 2024. All rights reserved.