Kotlin、JUnit5、Database Rider数据库动态测试实践
发布时间:2022-08-02 14:53:51 所属栏目:云计算 来源:互联网
导读:来龙去脉 因为项目组一些应用系统需要将Oracle数据库更换为国产分布式数据库,特地基于Kotlin、Junit5、Database Rider等开发了一套可配置的SQL测试工具,以在规模性测试之前,快速了解目标数据库对当前应用中各种SQL的兼容程度和默认行为,从而尽快对目标数
来龙去脉 因为项目组一些应用系统需要将Oracle数据库更换为国产分布式数据库,特地基于Kotlin、Junit5、Database Rider等开发了一套可配置的SQL测试工具,以在规模性测试之前,快速了解目标数据库对当前应用中各种SQL的兼容程度和默认行为,从而尽快对目标数据库进行评测,并据此在项目初期对迁移改造工作量有更准确的估计。 由于项目基于Kotlin语言,又用到了JUnit5动态测试特性,以及Database Rider数据库测试框架,特此作一分享,方便需要的同学围观和参考。 当然,数据库厂商或行业肯定有更为专业的工具对数据库的SQL逻辑和兼容性进行测试,至少有SQLsmith、Sqllogictest、SQLancer等,不在本文讨论范围之内,感兴趣的同学可以自行了解,也请专家老师多多批评指正。 JUnit5简介 JUnit 5是JUnit的下一代,于2017年9月首次GA,目标是为JVM上的开发测试建立一个新的基础,包括专注于Java 8及更高版本,以及启用许多不同风格的测试。 JUnit5提供了名为JUnit Platform的可运行不同测试引擎的平台,以及JUnit Jupiter引擎供编写和运行JUnit5风格的测试,还有用于运行JUnit4、JUnit3测试的JUnit Vintage引擎。 Kotlin、JUnit5、Database Rider数据库动态测试实践 JUnit5架构 JUnit5除了提供更为强大的断言工具之外,还提供了嵌套测试、重复测试、参数化测试、模板测试和动态测试等很多强大的测试编写工具,非常的方便。 Database Rider简介 Kotlin、JUnit5、Database Rider数据库动态测试实践 Database Rider形象图 Database Rider是基于数据库进行测试的新工具,旨在使DBUnit更接近您的JUnit测试,让数据库测试更为简单易用。相较于已经不再维护的DbUnit,接棒的Database Rider在测试配置、测试数据集定义、多数据库支持、JUnit5支持、Cucumber支持等很多方面进行了增强。 以下是Database Rider文档中的一个示例: 复制 @RunWith(JUnit4.class) public class DatabaseRiderCoreTest { @Rule public EntityManagerProvider emProvider = EntityManagerProvider.instance("riderDB"); @Rule public DBUnitRule dbUnitRule = DBUnitRule.instance(emProvider.connection()); @Test @DataSet({"users.yml","empty-tweets.yml"}) public void shouldListUsers() { List<User> users = em(). createQuery("select u from User u"). getResultList(); assertThat(users). isNotNull(). isNotEmpty(). hasSize(2); } } 概览 好了,对相关工具有了简单的了解之后,下面就开始进入正题吧。 首先,我们先看一下最终的运行效果。 Kotlin、JUnit5、Database Rider数据库动态测试实践 Html测试报告 以上就是目前运行完成后生成的Html格式的报告。可以看到目前共有48个测试案例,都运行通过了,耗费17s多。有一点遗憾是,表格中的Method name列显示的内容和预想的不同,暂时还没有找到解决的方法。 下面是在IntellJ IDEA中显示的运行结果。同样地,容器级别未能按照动态测试代码指定的DisplayName去显示。 (编辑:柳州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |