数据库基础单元测试策略:在单元测试和测试数据之间截断表
Posted
技术标签:
【中文标题】数据库基础单元测试策略:在单元测试和测试数据之间截断表【英文标题】:Database base unit testing strategy: truncating tables between unit tests & test data 【发布时间】:2012-02-02 10:28:44 【问题描述】:我正在尝试使用 JUnit 来测试一些数据库代码。我对此很陌生,所以请多多包涵。
我有一个由四个表组成的本地测试数据库。其中两个表已填充数据,另外两个在程序执行前为空。
程序基本上对填充的两个表执行一些查询,处理结果然后将这些结果写入程序执行时为空的两个表。有许多方法可以读取和写入数据库。我想测试一下。
我想要的是 tearDown() 方法在程序执行时截断空表,以便为下一次测试做好准备。实现这一目标的最佳方法是什么?
此外,每次开发人员设置测试环境时,可能会通过运行 SQL 脚本来创建包含数据的表。有没有更好的方法来做到这一点?可以自动化吗?会有相当多的数据,所以我不太喜欢为每个表手动创建 XML 数据集。
我正在使用 Oracle 数据库。
非常感谢您提供的任何建议/建议。
【问题讨论】:
【参考方案1】:尝试在您的测试中使用DBUnit 框架。这是对 JUnit 的扩展,并提供了您需要的功能。设置它可能有点困难,但一旦设置它就会像魅力一样发挥作用。
【讨论】:
嗨,Kurt,我查看了 DBUnit,但不确定应该使用它的哪些部分。你能解释一下我将如何使用 DBUnit 来实现我的每个目标吗? DBUnit 提供了一些开箱即用的数据库操作:CLEAN_INSERT(先清表,然后插入值)、INSERT(只插入值)、DELETE(删除所有由 dbunit 插入的值) , DELETE_ALL(删除所有值)。此外,您可以定义您的测试数据集。鉴于您的问题,在我看来,您需要将灵活数据定义为 dbunit 数据集,并在每次测试之前将其插入并在之后进行清理。以上是关于数据库基础单元测试策略:在单元测试和测试数据之间截断表的主要内容,如果未能解决你的问题,请参考以下文章