在我的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/