java - EasyMock 和 Ibatis

标签 java dao ibatis easymock data-access-object

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

谢谢 达米安

最佳答案

我想说这是不可能的。无法断言(使用 EasyMock 或其他模拟框架)DAO 实际上调用了某个存储过程,也无法验证它做了什么等。

使用 DAO + EasyMock 唯一能做的就是模拟/ stub DAO,但是这样你就不会测试 DAO,而是测试作用于 DAO 的协作者(如果我们说的是 MVC,通常是某种 Controller ) )。

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

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

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

  • testLoad - 从数据库加载并与 (1) 进行比较
  • testInsert - 将新实体插入数据库然后重新加载并比较
  • testUpdate - 修改现有实体,保存到数据库并重新加载/比较
  • testDelete - 从 (1) 中删除一些实体,然后尝试加载它并断言它失败(也可以检查是否没有其他内容被删除)

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

相关文章:

java - Prolog - 访问控制?

java - 在 iText pdf 处理过程中识别下划线和删除线属性

java - 如何从应用程序中的每个文件中删除特定的导入?

java - 避免 DAO 交叉访问

java - 将 "pass"数据从 Spring FORM 传输到 DAO 的通用方法是什么?

java - 通用 DAO 如何为所有不同的 DAO 实现返回相同的类型?

java - 为什么 Null Pointer Exception 对象的 cause 字段为空?

java - MyBatis嵌套集合查询导致重复错误结果

collections - 如何使用 MyBatis 3.x 插入对象集合?

java - MyBatis:递归同时映射多个相同类型的关联/集合