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