如何在不使用"查找"等的情况下测试DAO中的"添加"?

Xor*_*rty 7 java unit-testing

在下面的代码中,问题是,我不能在不使用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)

TGH*_*TGH 2

我认为您的测试是如上所述的有效集成测试,但我会使用 Add 来帮助 Find 的测试,反之亦然。在某种程度上,您必须允许自己信任与外部的最低级别的集成依赖性。我意识到您的测试中存在对其他方法的依赖性,但我发现 Add 和 Find 方法是“低级”方法,非常容易验证。它们本质上是互相测试,因为它们基本上是逆方法。

Add可以轻松构建查找的前提条件

Find可以验证添加是否成功。

我无法想象您的测试不会发现其中任何一个失败的情况