数据库单元测试-CRUD测试

时间:2020-01-09 10:35:38  来源:igfitidea点击:

如果需要测试DAO或者类似DAO的组件,则需要测试所有插入,读取,更新和删除工作是否按预期进行。这些操作通常缩写为CRUD(创建读取更新删除)。

与其为每个操作(插入,读取,更新,删除)编写单独的单元测试方法,不如在同一测试方法中测试所有4个操作会更容易。这样,我们不必在update和delete测试方法内部将记录插入数据库中。我们只需重用先前在单个CRUD测试方法中插入的数据即可。

这是一个简单的模板,向我们显示如何执行此操作:

@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();
  }  
}

测试方法首先测试插入物,然后使用读取方法测试插入方法和读取方法是否均有效。

其次,测试方法更新数据库中的记录,然后再次使用读取方法来帮助验证更新方法是否有效。

第三,测试再次删除数据库中的记录,然后再次使用读取方法来帮助验证删除方法是否有效。因此,该测试还验证:如果在数据库中未找到数据,则read方法返回" null",而不是引发异常。