在我的DAO层中,我通过调用存储过程来完成所有数据库工作。
我想知道是否有人能使用EasyMock成功测试其DAO层?

谢谢
达米安

最佳答案

我会说那是不可能的。无法(使用EasyMock或其他模拟框架)断言DAO实际上调用了一些存储过程,验证其执行的工作等。

使用DAO + EasyMock唯一可以做的是模拟/存根DAO,但是您不是在测试DAO,而是测试作用于DAO的协作者(如果说的是MVC,通常是某种控制器)。

要进行DAO / StoredProcedures的集成测试,我建议DBUnit


将testdata放入数据库中(如果使用jUnit,请在@Before方法中执行此操作)
调用被测试的DAO方法
如果方法返回任何结果,请将其与(1)中的预期数据进行比较
如果方法执行了一些插入/更新,则调用“读取方法”并将结果与​​(1)比较


如果您的DAO为某些业务实体提供CRUD,则可以测试DAO的每个操作:


testLoad-从数据库加载并与(1)比较
testInsert-将新实体插入数据库,然后重新加载并比较
testUpdate-修改现有实体,保存到数据库并重新加载/比较
testDelete-从(1)中删除某些实体,然后尝试加载它并断言它失败(也很好的方法是检查是否没有其他东西被删除)

关于java - EasyMock和Ibatis,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5174235/

10-12 19:05