java - 部分 mock 的替代品?

标签 java unit-testing mockito coding-style

厌倦了手工制作模拟,我正在尝试将 Mockito 引入我的项目。

假设我有一堆数据库访问器,它们隔离给定用例(或服务)的所有 Hibernate 查询。所以我可以有这样的接口(interface):RoutingDao,UserDao,ReportingDao。这些接口(interface)中的每一个都使用 commit()rollback()reload(Entity) 等方法扩展了一个非常通用的 Dao。对于 Hibernate,后者应该用当前 session 重新加载一个分离的实体。在测试中,它应该只返回其参数。

使用手工制作的模拟很容易:我有一个具有此方法的通用实现的 MockDao,并且 MockRoutingDao 将扩展 MockDao 并使用该实现。我认为使用 Mockito 的一种方法是创建扩展 MockDaoMockRoutingDao 并将未模拟的调用委托(delegate)给它。未继承的方法将使用 spy() 进行模拟。但这非常丑陋 - 我仍然需要手工制作一个模拟,并且部分模拟和继承以重用某些实现的整个想法是一团糟。

我该如何改进它? 为可在多个测试中重用的模拟方法创建共享实现的最佳实践是什么?

最佳答案

您确实想编写一个 org.mockito.stubbing.Answer 实现来处理每个 *DAO 模拟都会处理的常见内容。

您仍然可以添加自定义when stub 到此。

关于java - 部分 mock 的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4806842/

相关文章:

java - 如何在 JASPIC 中保存经过身份验证的用户?

java - 无法通过firebase-cloud-messaging中的pendingIntent传递数据

java - 初始化类字段成员的传统做法

java - 模拟响应不起作用,并调用真正的方法

java - 如何使用 Mockito 测试 ClassNotFoundException?

java - 从 Tomcat 5.0.27 升级到 Tomcat 7.0.30 后无法访问数据库

c# - .NET 单元测试可以使用哪种动态语言?

c# - 单元测试 View 中设置的 ASP.NET MVC ViewBag 属性

.net - 单元测试构造函数时的多个断言?

javax.validation.ValidationException : HV000028: Unexpected exception during isValid in Test