2012-02-02 98 views
1

我正在尝试使用JUnit来测试某些数据库代码。我对此很新,所以请耐心等待。数据库基本单元测试策略:在单元测试和测试数据之间截断表格

我有一个由四个表组成的本地测试数据库。这些表中的两个填充了数据,另外两个表在程序执行前是空的。

该程序基本上对填充的两个表执行一些查询,处理结果然后将这些结果写入两个表,当程序执行时这些表是空的。有很多读取和写入数据库的方法。我想测试这些。

我想要的是tearDown()方法截断当程序执行时为空的表,以便它们准备好进行下一个测试。达到这个目标的最好方法是什么?

此外,包含数据的表格可能会在开发人员设置测试环境时通过运行SQL脚本来创建。有没有更好的方法来做到这一点?它可以自动化吗?将会有相当多的数据,所以我并不喜欢手动为每个表创建XML数据集。

我正在使用Oracle数据库。

非常感谢您提供的任何建议/建议。

回答

2

尝试在测试中使用DBUnit框架。这是JUnit的扩展,并提供了您所需的功能。设置它可能有点困难,但一旦设置,它就像一个魅力。

+0

嗨Kurt,我看了一下DBUnit,我不确定它应该使用哪个部分。你能解释我将如何使用DBUnit来实现我的每一个目标? – mip 2012-02-02 10:43:29

+0

DBUnit提供了一些开箱即用的数据库操作:CLEAN_INSERT(首先清除表格,然后插入值),INSERT(仅插入值),DELETE(删除由dbunit插入的所有值),DELETE_ALL(删除所有值) 。此外,您可以定义您的测试数据集。鉴于你的问题,在我看来,你需要将你的灵活数据定义为dbunit数据集,并在每次测试之前插入并在之后进行清理。 – 2012-02-02 10:55:46