【问题标题】:How to run query like @Sql for test in Spring Data R2DBC如何在 Spring Data R2DBC 中运行类似 @Sql 的查询以进行测试
【发布时间】:2020-05-09 05:17:59
【问题描述】:

我创建了一个存储库并编写了一个测试用例。我想在使用@Sql (org.springframework.test.context.jdbc) 执行测试方法之前运行 insert.sql 但它没有运行。还有其他方法吗?

【问题讨论】:

    标签: java spring spring-data spring-data-r2dbc


    【解决方案1】:

    我遇到了同样的问题,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
    

    【讨论】:

      猜你喜欢
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      相关资源
      最近更新 更多