在下面的代码中,问题是,我不能在不使用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()));
}
}
Run Code Online (Sandbox Code Playgroud)
我认为您的测试是如上所述的有效集成测试,但我会使用 Add 来帮助 Find 的测试,反之亦然。在某种程度上,您必须允许自己信任与外部的最低级别的集成依赖性。我意识到您的测试中存在对其他方法的依赖性,但我发现 Add 和 Find 方法是“低级”方法,非常容易验证。它们本质上是互相测试,因为它们基本上是逆方法。
Add可以轻松构建查找的前提条件
Find可以验证添加是否成功。
我无法想象您的测试不会发现其中任何一个失败的情况