Categories

DbUnit is a JUnit extension and is very popular among developers for unit testing database-driven projects. In this blog I will discuss some of the tips to make your life easier and beautiful for DbUnit testing.

Using same connection for entire test suite
If you are extending DatabaseTestCase then this class creates a connection to the database in setUp() and closes it in teardown() this can prove to be a big overhead and can cause considerable slowdown in running tests as the number of test cases increase. Maintaining a single connection for the entire test suite can prove to be beneficial in such cases.

If you are using JUnit 4 then you can use annotations for performing initial operations (@BeforeClass) and thus there is no need to extend the DatabaseTestCase and finally handling the closing of database connection.

[java]@BeforeClass
public static void setUpBeforeClass() throws Exception {
handleSetUpOperation();
}
[/java]
If several test cases are using a read only dataset as expected state of the database after running the test cases then loading this expected dataset file only once for all the test cases can help up in speeding up things.

Specifying a DTD for the dataset can act as a cure for some of the things
You can create a DTD by using the following code in DbUnit.

Previous post

Next post

Comments

I’m curious to know how you implemented handleSetUpOperation() without extending DatabaseTestCase (or DBTestCase). As a matter of fact that scenario is one of the reasons why DbUnit 2.2 includes IDatabaseTester =)