AnyDbTest is the first automated DB unit testing tool available using XML as test case. AnyDbTest is just designed for DBA/DB developers. It supports all kinds of popular database, such as Oracle, SQL Server, MySQL, and PostgreSQL etc.

Features specific to AnyDbTest:

  • Writes test case with XML, rather than Java/C++/C#/VB test case code
  • Many kinds of standard assertion supported, such as StrictEqual, SetEqual, IsSupersetOf, Overlaps, RecordCountEqual etc
  • Allows using Excel spreadsheet/XML as the source of the data for the tests
  • Supports Sandbox test model, if test will be done in sandbox, all database operations will be rolled back, meaning any changes will be undone
  • Unique cross-different-type-database testing, which means target and reference result set can come from two databases, even if one is SQL Server, another is Oracle.


According to data presented by a number of organizations, early testing can provide a cost improvement of as much as 100 times over the practice of relying on system testing that occurs after integration. (Reference1, Reference2).

As one best practice of early testing, unit testing is a popular concept in application development. And in application developement community, there are many unit testing tools for developers, such as jUnit, NUnit, CppUnit etc.

But the database community has not yet embraced the advantages and strategies of this approach. Most database developers have little or no concept of unit testing and there are few, if any tools to support them. (Refer to this article from InfoQ). DBA/ DB developers had a long test feedback loop originated from application developers/testers, they were not really benefiting from unit testing.

Now this problem is history. AnyDbTest has filled this gap with offerings of so many cool features. And it offers some killer highlights such as Sandbox test model and cross-different-type-database test. All of these help it to exceed other existing tools.

Maybe you think, I can employ xUnit test frameworks to perform database unit testing.  But as you know, all xUnit tools are imperative style testing tools such as DbUnit, NUnit. To great extent, all xUnit tools are programming frameworks, rather than plug and play test tools. Using those xUnit tools for database, you will have to handle many complicated programming components and APIs. They are suitable for application developers, but are not the right choice for DBA and DB developers.

On the contrary, AnyDbTest is declarative style testing tool. What we do is to express what we want to test, rather than how to test. We only need to configure an XML test file to tell AnyDbTest what we want to test, rather than painstakingly writing test code for xUnit-like test framework. So AnyDbTest is the right choice for DBA or DB developers.

AnyDbTest can also be used to validate the replication, ETL, DTS & SSIS result. You can compare data of two SQL queries between two databases visually to see differences highlighted on the screen. Even you can get the one-stop service for ETL and validation via built-in data pump and record-set comparison functions.

AnyDbTest offers a visual dashboard. Success or failure of test is automatically computed and presented to you via an easy-to-understand red/green light display.


  • Unit Testing, while a well understood technique in the application development world, is not nearly as prevalent in the data community. Therefore, before jumping into how exactly you would utilize this technique, you should understand the overall fundamentals of the unit testing methodology. Please walk through About Unit Testing first. If you have already been familiar with unit testing concept. You can skip this.

  • The best way to see how AnyDbTest works is to read Quick Start.

  • If you have experience will find everything you need to know on Cheat Sheet (part1, part2).

  • On Reference, You will find all available types for argument direction, assertion and datetime format and so on.

Last edited Apr 10, 2011 at 12:31 PM by harrychinese, version 7