在以前的项目中, 用了一些业界流行的单元测试框架, 比如DUnit(for Delphi)和NUnit(for .NET). 但数据库上面的程序很多时候没有cover到. 尤其让专职的DB developer 编写stored procedure的单元测试代码, 他们压根没有听过. xUnit(JUnit/DUnit/NUnit)需要编Java/Delphi/.Net程序, 显然不适合他们.
于是google之, 找到了开源项目DbUnit, 研究了一会儿, 还是需要编写Java程序. 对于不熟悉Java的人来讲, 难度太大, 而且维护这些Java测试Project也比较麻烦. 其实我也觉得没有必要这么复杂, DB Developer应该将时间用在优化设计和优化实现, 而不是花过多的时间编写复杂的测试代码.
从InfoQ中文版曾经有一篇文章(http://www.infoq.com/cn/news/2008/11/PDC-testing)讲述,其中讲到: 早些的讨论普遍觉得数据库方面被忽视了,大部分的数据库开发人员很少或几乎没有单元测试的概念,也缺乏相关支持工具。于是开始构思做一个专为DBA和DB developer使用的数据库单元测试工具. 就有了AnyDbTest, 网站 http://www.anydbtest.com
AnyDbTest就是在者这样的背景下出现的, 它是专门DBA和DB Developer设计的单元测试工具, 你不再需要编写Java/.Net代码, 你只需要编写一个简单的Xml文件, 在Xml文件中, 告诉AnyDbTest你要测试什么, 你期望的结果应该是什么就可以了. 它提供了二十多个标准的Assertion, 包括超集, 子集, 集合相等, 真超集等等.
另外, 我制作了一个的tutorial页面, http://www.anydbtest.com/tutorial.html, 从中能够看到AnyDbTest的工作机制. 希望这个软件能对大家的项目有所帮助. AnyDbTest的Express版本是免费的, 欢迎使用.