mybatis+mysql如何使用TestCase测试sql

依赖mysql来测试sql,可能因为数据修复的问题,不能保证每次运行testCase的数据是一致的。

可以使用内置数据库h2来模拟mysql。

引入依赖

<dependency>
 <groupId>com.h2database</groupId>
 <artifactId>h2</artifactId>
    <scope>test</scope>
</dependency>

创建sql文件,建表语句+数据初始化

SET MODE MYSQL;
CREATE TABLE `test`(
...
);
INSERT INTO `test` (`column1`) Values ('test');

测试用例

class H2DatabaseTest {
    private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
            .withConfiguration(AutoConfigurations.of(PrometheusMetricsExportAutoConfiguration.class,
                    MetricsAutoConfiguration.class,
                    CompositeMeterRegistryAutoConfiguration.class,
                    MybatisAutoConfiguration.class,
                    H2DatabaseTest.DataSourceConfiguration.class))
            .withPropertyValues("xxx.uuid.standalone=false");
    @Test
    void testWithUserUse() {
        contextRunner.run(context -> {
            .....
        });
    }
    @Configuration
    public static class DataSourceConfiguration {
        @Bean
        public DataSource dataSource() {
            return new EmbeddedDatabaseBuilder()
                    .setType(EmbeddedDatabaseType.H2)
                    //建表和初始化数据
                    .addScript("h2.sql")
                    .build();
        }
    }
}
发表评论 / Comment

用心评论~