在下面的代码的问题是,我无法测试dao.add()不使用dao.list()。大小(),反之亦然。如何在不使用“查找”的情况下测试DAO中的“添加”?
此方法是正常还是不正确?如果不正确,如何改进?
public class ItemDaoTest {
// dao to test
@Autowired private ItemDao dao;
@Test
public void testAdd() {
// issue -> testing ADD but using LIST
int oldSize = dao.list().size();
dao.add(new Item("stuff"));
assertTrue (oldSize < dao.list().size());
}
@Test
public void testFind() {
// issue -> testing FIND but using ADD
Item item = new Item("stuff")
dao.add(item);
assertEquals(item, dao.find(item.getId()));
}
}
您是在集成或单元测试之后? – davidfrancis 2012-03-30 22:44:19
你告诉我:)在这种特殊情况下 - 只使用常识似乎更像是对我的集成测试。但是,你知道,毕竟我只是想确保我的DAO工作,就是这样。 – Xorty 2012-03-31 01:18:19
是的,这是一种痛苦。由于dao具有的依赖性,不确定是否可以结束单元测试。 dao如何工作?我会亲自尝试避免让你的测试依赖于外部数据库,并尝试存根或模拟数据库访问层,如其中一个答案中的建议。话虽如此,但它从来没有像真正的分贝依赖集成测试那样令人放心。 – davidfrancis 2012-03-31 10:21:18