数据库单元测试-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",而不是引发异常。

