EasyMock.replay() 是做啥用的?

     2023-04-18     200

关键词:

【中文标题】EasyMock.replay() 是做啥用的?【英文标题】:What is EasyMock.replay() used for?EasyMock.replay() 是做什么用的? 【发布时间】:2011-08-24 15:14:28 【问题描述】:

我是单元测试和 Junit 的新手。我知道 Junit 的基础知识。我刚开始学习 EasyMock 框架。

我无法理解replay() 方法的使用。

谁能提供一些信息?

我了解EasyMock.expect()EasyMock.verify() 的用法。

【问题讨论】:

我认为值得一提的是,如果您不喜欢一直调用 replay(),那么您应该在不需要的地方尝试 Mockito。 这是这个框架中最令人沮丧的事情。在我必须每天使用它之前,我大约需要 4-5 个月才能得到它。 【参考方案1】:

重播方法用于将模拟从录制(您记录您希望调用的方法)传递到重播状态(您实际测试的地方)。

【讨论】:

感谢 user753739 的回复。方法名称应该被命名为“play”或类似的名称或“replay”。在这种情况下,“重播”一词令人困惑。 在哪种情况下我不想调用 replay()? (对我来说,“激活”这个名字更好地解释了我期望它会做什么。) “expect”、“replay”和“verify”的命名确实很奇怪,但在我的帖子中有解释。 这是一个记录 -> 重播隐喻。期望来自设定期望。验证是验证您期望被调用的是什么。【参考方案2】:

你可以这样记住:当你写EasyMock.expect(abc.someMethod).andReturn(answer)时,你记录了预期的行为。但是,当您编写EasyMock.replay(abc) 时,您实际上是在激活它。

我发现这个例子非常有用: http://www.tutorialspoint.com/easymock/easymock_adding_behavior.htm

【讨论】:

【参考方案3】:

使用 EasyMock,当您“预期”时,您实际上是在记录所需的虚假/模拟行为。因此,当您想将此模拟行为注入测试运行程序(例如 JUnit)时,您将“重放”您的记录。

与其他模拟框架相比确实很奇怪的名字,应该是一个更好的名字

期望 --> 注册 replay --> activate(或根本不需要调用它)。

【讨论】:

你说得对,我根本看不出调用replay方法的理由。 您需要记住,EasyMock 在所有其他现代模拟框架之前就已经存在。所以它用了当时它想要的比喻。【参考方案4】:

如上述帖子中所述,该名称具有误导性。 EasyMock.replay() 激活了期望。还希望在我们定义期望之后默认激活期望。像 Mockito 这样的许多其他框架也是如此。

但是我看到了一点(我可能错了),设计师可能认为是如下场景:

    TestClass testObj = EasyMock.createMock(TestClass.class);   
    expect(testObj.testMethod(testInputOne).andReturn(testOutputOne);
    expect(testObj.testMethod(testInputTwo).andReturn(testOutputTwo);
    expect(testObj.testMethod(testInputThree).andReturn(testOutputThree);
    //...
    EasyMock.replay(testObj);

在这里,我们为同一方法的不同输入设置不同的期望。然后,一口气激活所有期望。每次我们定义它时,框架都不会激活它。

【讨论】:

sigaddset 是做啥用的?

】sigaddset是做啥用的?【英文标题】:Whatissigaddsetusedfor?sigaddset是做什么用的?【发布时间】:2014-12-0111:37:41【问题描述】:我有这段代码,我使用sigaddset和sigaction。但是,如果我评论segaddset结果是一样的structsigactionact;act.sa_handl... 查看详情

maven.multiModuleProjectDirectory 是做啥用的?

】maven.multiModuleProjectDirectory是做啥用的?【英文标题】:Whatismaven.multiModuleProjectDirectoryusedfor?maven.multiModuleProjectDirectory是做什么用的?【发布时间】:2015-06-2823:19:04【问题描述】:我在SO和Maven邮件列表上看到了很多关于设置env参... 查看详情

cursor.setNotificationUri() 是做啥用的?

】cursor.setNotificationUri()是做啥用的?【英文标题】:Whatiscursor.setNotificationUri()usedfor?cursor.setNotificationUri()是做什么用的?【发布时间】:2014-03-0415:02:29【问题描述】:我研究了如何使用ContentProviders和来自thistutorial的加载器我是怎... 查看详情

itertools.groupby() 是做啥用的?

】itertools.groupby()是做啥用的?【英文标题】:Whatisitertools.groupby()usedfor?itertools.groupby()是做什么用的?【发布时间】:2017-05-1515:43:37【问题描述】:在阅读python文档时,我遇到了itertools.groupby()功能。这不是很简单,所以我决定在... 查看详情

渠道是做啥用的?

】渠道是做啥用的?【英文标题】:Whatarechannelsusedfor?渠道是做什么用的?【发布时间】:2017-02-1102:35:37【问题描述】:在查看一些Go代码时,我发现了以下内容:ch:=make(chanint)我查阅了一个在线教程,了解GoChannels的工作原理:ht... 查看详情

MAKEWORD 是做啥用的?

】MAKEWORD是做啥用的?【英文标题】:WhatisMAKEWORDusedfor?MAKEWORD是做什么用的?【发布时间】:2014-06-1002:14:20【问题描述】:我在一段教学代码中遇到了这个宏MAKEWORD(2,2)。我在MSDN中读到它“通过连接指定的值来创建一个WORD值。”... 查看详情

Laravel 中的 `HtmlString` 是做啥用的?

】Laravel中的`HtmlString`是做啥用的?【英文标题】:Whatis`HtmlString`usedforinLaravel?Laravel中的`HtmlString`是做什么用的?【发布时间】:2017-07-0806:01:45【问题描述】:本课程:HtmlStringhtml=$html;/***获取HTML字符串。**@return字符串*/公共函数t... 查看详情

SetPixelFormat() 中的 PIXELFORMATDESCRIPTOR 参数是做啥用的?

】SetPixelFormat()中的PIXELFORMATDESCRIPTOR参数是做啥用的?【英文标题】:WhatisthePIXELFORMATDESCRIPTORparameterinSetPixelFormat()usedfor?SetPixelFormat()中的PIXELFORMATDESCRIPTOR参数是做什么用的?【发布时间】:2010-03-2918:51:16【问题描述】:通常在设... 查看详情

Iterable 接口是做啥用的?

】Iterable接口是做啥用的?【英文标题】:WhatistheIterableinterfaceusedfor?Iterable接口是做什么用的?【发布时间】:2010-11-0617:52:36【问题描述】:我是初学者,无法理解Iterable界面的真实效果。【问题讨论】:【参考方案1】:除了Jere... 查看详情

predicateWithBlock: 中块的 bindings 参数是做啥用的?

】predicateWithBlock:中块的bindings参数是做啥用的?【英文标题】:WhatisthebindingsparameterfortheblockinpredicateWithBlock:usedfor?predicateWithBlock:中块的bindings参数是做什么用的?【发布时间】:2011-09-1914:10:01【问题描述】:+[NSPredicatepredicateWithB... 查看详情

app.config 是做啥用的?

】app.config是做啥用的?【英文标题】:Whatisapp.configfor?app.config是做什么用的?【发布时间】:2010-11-2817:44:52【问题描述】:Settings.settings生成Settings.Designer.cs,它可能会生成app.config,然后将其作为Foo.exe.config复制到输出目录。当... 查看详情

UITextInput 的 Tokenizer,它是做啥用的?

】UITextInput的Tokenizer,它是做啥用的?【英文标题】:TokenizerofUITextInput,whatisitusedfor?UITextInput的Tokenizer,它是做什么用的?【发布时间】:2013-05-0210:17:12【问题描述】:我正在实现一个自定义文本输入视图,它采用UITextInput协议,... 查看详情

namedtuple 的第一个参数是做啥用的?

】namedtuple的第一个参数是做啥用的?【英文标题】:What\'sthefirstargumentofnamedtupleusedfor?namedtuple的第一个参数是做什么用的?【发布时间】:2015-08-1202:46:34【问题描述】:我们像这样使用namedtuple:>>>fromcollectionsimportnamedtuple&... 查看详情

eq是做啥用的,它和压缩一样吗.如果不一样那压缩是做啥用的~

EQ是频率均衡器,它能够允许用户主动地对声音的各频段进行增益或衰减的处理。压缩是是对电信号的处理装置,它会将过大的电压减弱,过小的电压增强,体现在声音上就是能够让音箱中放出的声音稳定在一个设定的范围,尤... 查看详情

用户定义的操作“类型”是做啥用的?

】用户定义的操作“类型”是做啥用的?【英文标题】:Whatistheuserdefinedaction"type"for?用户定义的操作“类型”是做什么用的?【发布时间】:2016-08-0801:43:29【问题描述】:这里的“类型”列有什么作用?【问题讨论】:... 查看详情

测试和设置是做啥用的?

】测试和设置是做啥用的?【英文标题】:WhatisTest-and-Setusedfor?测试和设置是做什么用的?【发布时间】:2008-09-2313:22:00【问题描述】:在阅读了Test-and-SetWikipediaentry之后,我仍然想知道“Test-and-Set的用途是什么?”我知道您可... 查看详情

cacert.pem 到底是做啥用的?

】cacert.pem到底是做啥用的?【英文标题】:Whatexactlyiscacert.pemfor?cacert.pem到底是做什么用的?【发布时间】:2013-02-0522:14:39【问题描述】:在我的PayPalPro支付页面中,我使用cURL函数curl_setopt_array()和以下选项:cUInCURLOPT_CAINFO=&gt... 查看详情

pyproject.toml 文件是做啥用的?

】pyproject.toml文件是做啥用的?【英文标题】:Whatispyproject.tomlfilefor?pyproject.toml文件是做什么用的?【发布时间】:2020-11-0900:26:03【问题描述】:背景我正准备尝试从GitHub下载的Python包,发现它没有setup.py,所以我无法安装它pipin... 查看详情