在Spring data JPA中,有一个@Sql注释,对于设置持久层集成测试非常方便。它可以在每次测试之前推出测试数据,并在每次测试之后执行清理。
但是,我在spring-data-r2dbc模块中找不到它。在spring-data-r2dbc中有没有类似的方法可以轻松地处理这个任务
发布于 2020-09-29 19:13:19
到目前为止,我还没有发现比将org.springframework.data.r2dbc.connectionfactory.init.ScriptUtils#executeSqlScript(io.r2dbc.spi.Connection, org.springframework.core.io.Resource)与JUnit @BeforeEach和@AfterEach测试回调一起使用更好的方法:
@Autowired
private ConnectionFactory connectionFactory;
private void executeScriptBlocking(final Resource sqlScript) {
Mono.from(connectionFactory.create())
.flatMap(connection -> ScriptUtils.executeSqlScript(connection, sqlScript))
.block();
@BeforeEach
private void rollOutTestData(@Value("classpath:/db/insert_test_data.sql") Resource script) {
executeScriptBlocking(script);
}
@AfterEach
private void cleanUpTestData(@Value("classpath:/db/delete_test_data.sql") Resource script) {
executeScriptBlocking(script);
}注意:这里我使用的是带有jupiter API的JUnit5
https://stackoverflow.com/questions/64115419
复制相似问题