在下面的代码中,问题是我无法在不使用 dao.list().size() 的情况下测试 dao.add(),反之亦然。
这种做法是正常的还是不正确的?如果不正确,如何改进?
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()));
}
}
最佳答案
我认为您的测试是如上所述的有效集成测试,但我会使用 Add 来帮助测试 Find,反之亦然。 在某种程度上,您必须允许自己信任您对外部依赖的最低集成级别。我意识到在您的测试中存在对其他方法的依赖性,但我发现 Add 和 Find 方法是非常容易验证的“低级”方法。 它们本质上是相互测试的,因为它们基本上是逆向方法。
Add可以很容易地为find建立前置条件
查找可以验证添加是否成功。
我想不出任何一个失败都不会被您的测试捕获的场景
关于java - 如何在不使用 "add"等的情况下在 DAO 中测试 "find"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9950102/