如何在 Spring 数据 R2DBC 中 运行 查询 @Sql 进行测试
How to run query like @Sql for test in Spring Data R2DBC
我创建了一个存储库并编写了一个测试用例。我想 运行 insert.sql 在用@Sql (org.springframework.test.context.jdbc) 执行测试方法之前
但它没有 运行。还有别的办法吗?
我遇到了同样的问题,Spring Data R2DBC 还不支持@SQl 注释。
使用以下函数:
private void executeSqlScriptBlocking(final Resource sqlScript) {
Mono.from(connectionFactory.create())
.flatMap(connection -> ScriptUtils.executeSqlScript(connection, sqlScript)
.then(Mono.from(connection.close())))
.block();
}
然后:
@Autowired
private ConnectionFactory connectionFactory;
@BeforeEach
void init(@Value("classpath:init_test_data.sql") Resource sqlScript) {
executeSqlScriptBlocking(sqlScript);
}
application.yml:
spring:
r2dbc:
pool:
enabled: true
initial-size: 8
max-size: 16
当在测试中使用连接池时,我们应该关闭每一个创建的连接,因为它似乎没有被释放。例如,如果我们有 16 个池大小,我们将只能执行 16 个测试,然后从第 17 个开始无限循环。
测试于:
Java: 8(jdk-8.0.272.10-hotspot)
Spring Boot: 2.3.9
JUnit 5: 5.6.3
我创建了一个存储库并编写了一个测试用例。我想 运行 insert.sql 在用@Sql (org.springframework.test.context.jdbc) 执行测试方法之前 但它没有 运行。还有别的办法吗?
我遇到了同样的问题,Spring Data R2DBC 还不支持@SQl 注释。
使用以下函数:
private void executeSqlScriptBlocking(final Resource sqlScript) {
Mono.from(connectionFactory.create())
.flatMap(connection -> ScriptUtils.executeSqlScript(connection, sqlScript)
.then(Mono.from(connection.close())))
.block();
}
然后:
@Autowired
private ConnectionFactory connectionFactory;
@BeforeEach
void init(@Value("classpath:init_test_data.sql") Resource sqlScript) {
executeSqlScriptBlocking(sqlScript);
}
application.yml:
spring:
r2dbc:
pool:
enabled: true
initial-size: 8
max-size: 16
当在测试中使用连接池时,我们应该关闭每一个创建的连接,因为它似乎没有被释放。例如,如果我们有 16 个池大小,我们将只能执行 16 个测试,然后从第 17 个开始无限循环。
测试于:
Java: 8(jdk-8.0.272.10-hotspot)
Spring Boot: 2.3.9
JUnit 5: 5.6.3