Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 部分嘲笑的替代方案?_Java_Unit Testing_Mockito_Coding Style - Fatal编程技术网

Java 部分嘲笑的替代方案?

Java 部分嘲笑的替代方案?,java,unit-testing,mockito,coding-style,Java,Unit Testing,Mockito,Coding Style,厌倦了手工制作mocks,我试图将Mockito引入我的项目 假设我有一组数据库访问器,它们隔离给定用例(或服务)的所有Hibernate查询。所以我可以有这样的接口,比如RoutingDao,UserDao,ReportingDao。这些接口中的每一个都扩展了一个非常通用的Dao,方法包括commit()、rollback()或reload(Entity)。使用Hibernate,后者应该在当前会话中重新加载分离的实体。在测试中,它应该只返回其参数 使用手工制作的mock很容易:我有一个Moc

厌倦了手工制作mocks,我试图将Mockito引入我的项目

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

使用手工制作的mock很容易:我有一个
MockDao
,具有此方法的通用实现,
MockRoutingDao
将扩展
MockDao
并使用该实现。我在Mockito中看到的一种方法是创建
MockRoutingDao
,它扩展了
MockDao
,并将未经修改的调用委托给它。未继承的方法将被一个
spy()
模拟。但是这很难看——我仍然需要手工制作一个mock,而部分mock和继承用于重用某些实现的整个想法是一团糟


我怎样才能改进它为模拟方法创建共享实现的最佳实践是什么,可以在许多测试中重复使用?

您真的想编写一个org.mockito.stubing.Answer实现来处理每个*DAO mock将处理的常见内容


您仍然可以在存根时添加自定义的

您确实想编写一个org.mockito.stubing.Answer实现来处理每个*DAO mock将处理的常见内容


您仍然可以在存根时添加自定义的

@Griff Powermock也是一个漂亮的工具Powermock用于模拟静态和私有(它通过调用另一个类加载器来实现);它与Mockito或EasyMock等模拟框架一起使用。@Griff Powermock也是一个漂亮的工具Powermock用于模拟静态和私有(它通过调用另一个类加载器来实现);它与Mockito或EasyMock等模拟框架结合使用。