Tech and Media Labs
This site uses cookies to improve the user experience.




Database Unit Testing - CRUD Testing

Jakob Jenkov
Last update: 2014-05-24

If you need to test a DAO or DAO like component, you will need to test that all of inserts, reads, updates and deletes work as expected. These operations are often abbreviated CRUD (Create Read Update Delete).

Rather than writing a separate unit test method for each operation (insert, read, update, delete), it can be easier to test all 4 operations inside the same test method. That way, you don't have to insert records into the database inside the update and delete test methods. You just reuse the data inserted earlier in the single CRUD test method.

Here is a simple template showing you how to do this:


@Test
public void testIt() throws Exception {

  Connection connection = getConnection();
  connection.setAutoCommit(false);    //begin transaction

  MyDao      myDao      = new MyDaoImpl(connection);

  try{
    
    myDao.insertABC("1", "one");
    myDao.insertABC("2", "two");

    assertEquals("one", myDao.readABC("1"));
    assertEquals("two", myDao.readABC("2"));


    myDao.update("1", "oneOne");
    myDao.update("2", "twoTwo");

    assertEquals("oneOne", myDao.readABC("1"));
    assertEquals("twoTwo", myDao.readABC("2"));

    
    myDao.delete("1");
    myDao.delete("2");

    assertNull(myDao.readABC("1"));
    assertNull(myDao.readABC("2"));

    
  } finally {
    connection.rollback();
    connection.close();
  }  
}

The test method first tests the inserts, then uses the read methods to test if both the insert and read method works.

Second, the test method updates the records in the database, and again uses the read methods to help verify that the update methods works.

Third, the test deletes the records in the database again, and again uses the read methods to help verify that the delete methods works. The test thus also verifies, that the read method returns null if no data is found in the database, rather than throwing an exception.

Jakob Jenkov




Copyright  Jenkov Aps
Close TOC