java - 如何在不使用 "add"等的情况下在 DAO 中测试 "find"?

标签 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()));
    }
}

最佳答案

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

Add可以很容易地为find建立前置条件

查找可以验证添加是否成功。

我想不出任何一个失败都不会被您的测试捕获的场景

关于java - 如何在不使用 "add"等的情况下在 DAO 中测试 "find"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9950102/

相关文章:

java语法问题

java - JTable RowFilter 是如何工作的?

java - 在 Spring 3 中创建单元测试

unit-testing - 在哪里为 Intellites 生成的每个测试添加断言

delphi - 更换功能单元

java - 使用 toString 方法但组合框仍然不显示值

java - 对具有关系的对象实现save() Action ?

java - Netbeans 7.2 中的调试 View

c# - 当 ReturnResult 是自定义对象时 Mock 返回 null 值,但当它是基本类型 bool 时按预期工作

python - 如何在单元测试中使用 assert_frame_equal