Mockito - void 函数上的 thenCallRealMethod()

2023-12-30

我在尝试编写 JUnit 测试用例时遇到了问题,而且对 Mockito 还比较陌生。

我有一个正在嘲笑的类的函数,该函数恰好是 void 返回类型。当从我的模拟类调用此函数时,我的理解(和调试经验)是它不会调用原始函数。为了克服这个问题,我尝试使用“when”和“thenCallRealMethod()”。

when(instance.voidFunction()).thenCallRealMethod();

“voidFunction”充满了我不想触发的逻辑。我已将它们提取到 when 语句中以避免这种情况。我读过我应该使用以下格式doReturn().when().voidFunction(),但是这样做并不会调用真正的方法。

据我了解,我不能在这里使用间谍,因为我不希望voidFunction()在“when”语句之前调用。感谢任何帮助,如果这是一个非常简单的解决方案,我深表歉意,因为尽管我阅读了很多内容,但我对mockito的理解并不是很好。谢谢!


The when语法不适用于 void 方法(它不适合when), and doReturn当没有返回值时不适用。doCallRealMethod http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html#doCallRealMethod()很可能就是你想要的答案。

doCallRealMethod().when(instance).voidFunction();

请记住,在模拟上调用真实方法时,您可能不会得到非常真实的行为,因为与间谍不同,模拟对象将跳过所有构造函数和初始化程序调用,包括设置字段的调用。这意味着,如果您的方法根本使用任何实例状态,则它不太可能作为模拟使用doCallRealMethod or thenCallRealMethod。使用间谍,您可以创建类的真实实例,然后Mockito.spy方法将复制该实例状态以实现更真实的交互。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mockito - void 函数上的 thenCallRealMethod() 的相关文章

  • 单元测试中的多个断言[重复]

    这个问题在这里已经有答案了 我刚刚读完 Roy Osherove 的 单元测试的艺术 我正在努力遵循他在书中提出的最佳实践 最佳实践之一是不要在测试方法中使用多个断言 这条规则的原因对我来说相当清楚 但它让我想知道 如果我有这样的方法 pu
  • Grails 测试中的模拟配置

    在 Grails 2 0 X 之前 可以使用mockConfig测试扩展的基类提供的方法 然而 在 Grails 2 0 X 中 建议测试类使用 TestFormixin 而不是扩展基类 这个 mixin 似乎没有提供任何与mockConf
  • Rhino.Mocks 和 ref 参数

    我在测试具有 ref 参数的方法时遇到问题 我不是库 代码所有者 所以我无法更改它 所以请不要建议我删除 ref 参数 我使用这个网站作为参考 http ayende com wiki Rhino 20Mocks 203 5 ashx Ou
  • 单元测试:独立测试与代码重复(DRY)

    我正在迈出单元测试的第一步 并且不确定在单元测试中似乎相互矛盾的两个范式 即 每个单元测试都应该是独立的 不依赖于其他单元测试 不要重复自己 更具体地说 我有一个要测试的导入器 导入器具有 导入 功能 获取原始数据 例如 从 CSV 中取出
  • 单元测试定位服务

    我有一个位置跟踪服务 正在尝试对其进行单元测试 我正在尝试使用 locationManager addTestProvider 和 setTestProviderLocation 方法来实现此目的 但是 我似乎无法通过提供程序获取任何位置并
  • 测试 Spring 端点时如何防止 NestedServletException?

    我在尝试着测试安全配置我的一些端点受到保护 PreAuthorize oauth2 hasScope scope 当使用不具有所需范围的访问令牌通过 Postman 访问此类端点时 将返回以下内容并带有 HTTP 状态代码 403 禁止 e
  • grailsGrails 单元测试中的应用程序访问

    我正在尝试为使用 grailsApplication config 进行一些设置的服务编写单元测试 看来在我的单元测试中 服务实例无法访问其设置的配置文件 空指针 而当我运行 run app 时它可以访问该设置 我如何配置服务以在单元测试中
  • Python 模拟中的模拟属性?

    我使用起来相当困难mock在Python中 def method under test r requests post http localhost post print r ok prints
  • PHPUnit - 使用配置文件时“未执行测试”

    问题 为了提高代码质量 我决定尝试学习如何使用单元测试来测试我的代码 而不是使用平庸的最佳测试解决方案 我决定使用 Composer 安装 PHPUnit 作为个人库 它可以让我实现常见的数据库功能 起初我没有 PHPUnit 的配置文件
  • PowerMock,模拟静态方法,然后对所有其他静态调用真实方法

    我正在设置模拟类的静态方法 我必须在 Before 带注释的 JUnit 设置方法 我的目标是设置类来调用真正的方法 except对于那些我明确嘲笑的方法 基本上 Before public void setupStaticUtil Pow
  • 使用带有 OnException 定义的adviceWith进行Camel路由测试

    我有一个非常简单的 Camel 路由定义 其中只包含一些 OnException 谓词来处理相应的异常和一些日志语句 from hazelcast seda someQueue id someQueueID onException Cust
  • 一旦相关命令更改,如何自动运行 py.test?

    通过autonose或nosy 一旦某些测试文件或相关文件发生更改 它将自动运行nosetests 请问py test是否提供了类似的功能 有没有其他工具可以自动激发py test 您可以安装pytest xdist 插件 http pyp
  • 如何使用电源模拟对 Spring Boot Rest 控制器和异常处理程序进行单元测试

    我有一个简单的 Spring boot 应用程序 其中包含 Employee 控制器 如果过去的年份大于 2014 年 则返回 Employee 姓名 如果年份不小于 2014 年 则我将抛出一个自定义异常并在异常处理程序中处理它 我想使用
  • 如何知道您的单元测试装置是否“尺寸合适”?

    您如何知道 测试夹具 的尺寸是否合适 我所说的 测试夹具 是指一个包含大量测试的类 我在测试装置中一直注意到的一件事是它们变得有点冗长 鉴于它们也可能不够详细 您如何了解单元测试的大小是否合适 我的假设是 至少在 Web 开发的背景下 您应
  • 使用原始类型模拟案例类

    考虑以下类型结构 trait HasId T def id T case class Entity id Long extends HasId Long 比方说 我们想在一些测试中模拟实体类 val entityMock mock Enti
  • UnitTest HttpResponse WriteAsync 和 CopyToAsync

    我想对下一个方法进行单元测试 public static async Task SetResponseBody HttpResponse response string message var originalResponseBody re
  • 使用 Minitest 测试自定义验证器

    我有多个带有电子邮件验证的模型 因此 我将验证提取到自定义验证器中 我按照以下教程做到了这一点导轨指南 http guides rubyonrails org active record validations html custom va
  • 如何对嵌套函数进行单元测试? [复制]

    这个问题在这里已经有答案了 您将如何对嵌套函数进行单元测试f1 在下面的例子中 def f def f1 return 1 return 2 或者需要测试的函数不应该嵌套吗 有一个类似的问题这个链接 https stackoverflow
  • Akka.net 和单元测试

    我想使用 Akka net TestKit 编写单元测试 但我有一个问题 我有一个 SubscriptionService 类 它负责将消息传输给选定的参与者 public class SubscriptionService Receive
  • 使用覆盖率信息测试 Go 中的 os.Exit 场景 (coveralls.io/Goveralls)

    这个问题 如何在 Go 中测试 os exit 场景 https stackoverflow com questions 26225513 how to test os exit scenarios in go 以及其中得票最高的答案 列出

随机推荐

  • 解析 Roslyn 中的参数类型

    我正在使用 Roslyn 来实现自定义业务规则 目前 我有点卡住了 我必须在调用方法时验证参数的类型 验证该方法正在被调用或包含参数时没有问题 我已经通过使用 GetSymbolInfo 来获取当前语法的符号来解析 IdentifierNa
  • 获取“sed 错误 - 非法字节序列”(在 bash 中)[重复]

    这个问题在这里已经有答案了 进行一些流编辑以更改令人讨厌的 Parallels 图标 它的开发很差 并且嵌入到应用程序本身中 而不是作为图像文件 所以我找到了这个 sed 命令 它有一些很好的反馈 sudo sed i bak s Para
  • Python:检查负数

    我试图向该字符串添加一段代码以检查第一个位置是否有负数 如果代码识别出负数 则应返回 False 我在用户输入命令中遇到 int 和 str 问题 抱歉 Python 新手 def is number S if s lt 0 print F
  • grails 2.3.4 与 Angular js 结合的智能文件夹结构

    在不使用 grails angularjs 插件的情况下 grails 2 3 4 与 angularjs 结合的智能文件夹结构是什么 目前我已将所有内容打包到webapp folder 组织目录的方法有很多 但是 我们使用的方式 我将其称
  • 如何禁用和启用 android ScrollView 上的滚动? [复制]

    这个问题在这里已经有答案了 我是一名android开发人员 我也想使用ScrollView 这个ScrollView需要一段时间禁用滚动 一段时间启用滚动 但是我无法禁用滚动 如何实现它 请帮助我 我还尝试使用一些代码 例如 s fullp
  • 在循环期间删除列表中的项目

    我有下面的代码 我正在尝试从列表中删除两个字符串predict strings and test strings如果其中一个已在另一个中找到 问题是我必须将它们分开并检查另一个字符串中是否存在一个字符串的 部分 如果存在 那么我只是说存在匹
  • Matlabpool打开worker非常慢

    我刚刚组装了一个新设备 i7 4770K 512gb SSD 16gb DDR3 2133 mhz ram 并安装了 MATLAB r2013a 当我调用 matlabpool 命令时 需要花费很长时间才能打开每个单独的工作线程 您在任务管
  • ruby 中的数据库连接池

    我刚刚开始使用 Ruby 正在使用 Sinatra 但找不到在请求之间共享数据库连接的方法 我来自 Java Web 开发 你必须做的基本事情之一就是池化数据库连接 所以我确信 Ruby 中存在类似的东西 但我只是找不到它 ActiveRe
  • C# 无法使“notnull”类型可为空

    我正在尝试创建一个类似于 Rust 的类型Result或哈斯克尔的Either到目前为止我已经做到了 public struct Result
  • 调用未定义函数 odbc_connect() php 7

    我正在测试 php 7 并遇到此错误 致命错误 未捕获错误 调用未定义的函数 odbc connect 从文档页面 http php net manual en function odbc connect php http php net
  • 终止挂起查询(事务中空闲)

    我正在使用带有 Crane Postgres 选项的 Heroku 当我的本地计算机崩溃时 我正在从本地计算机对数据库运行查询 如果我跑 select from pg stat activity 其中一个条目有
  • 在 Xcode 4 中添加框架 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Xcode 4 中 添加现有框架 https stackoverflow com questions 3352664 how to add existing frameworks in xco
  • 如何同步对具有 didSet 的属性的访问?

    如何同步使用 didSet 的属性的访问 使用 GCD 或 objc sync enter 我有一处房产 有一个房产观察员 如何使用私有队列来同步属性的获取 设置 var state State disconnected Q How to
  • PHP 中类的默认可见性是多少?

    我可以在中找到属性和方法的默认可见性PHP手册 https secure php net manual en language oop5 visibility php 但我找不到有关课程本身的任何信息 我的猜测是它是公开的 但如果有人可以链
  • 如何在 Android 中写入 SD 卡上的文件夹?

    我使用以下代码从服务器下载文件 然后将其写入 SD 卡的根目录 一切正常 package com downloader import java io File import java io FileOutputStream import j
  • 用于匹配大括号的 IntelliJ IDEA 快捷键映射

    在 IntelliJ IDEA 中导航到匹配大括号的键盘映射是什么 public void blah If 是我的光标 我想用这个键盘映射跳到右大括号 我只用 IntelliJ 9 验证了这一点 但是 在 Windows 上 Ctrl wi
  • 将 GitHub 分叉到 AzureDevOps?

    这篇2014年的帖子 http www woodcp com 2014 01 how to fork git repositories on visual studio online 表示没有对从 GitHub 分叉到 AzureDevOp
  • matplotlib 中的 Latex 渲染错误

    使用 python 2 7 12 在 Ubuntu 16 04 上 和 matplotlib 1 5 2 以下代码渲染不正确 from matplotlib pyplot import plot 1 2 1 1 xlabel r beta
  • Python。如何优化搜索功能

    有什么办法可以优化这两个功能吗 第一个功能 def searchList list element for i in range 0 len list if list i element return True return False 第
  • Mockito - void 函数上的 thenCallRealMethod()

    我在尝试编写 JUnit 测试用例时遇到了问题 而且对 Mockito 还比较陌生 我有一个正在嘲笑的类的函数 该函数恰好是 void 返回类型 当从我的模拟类调用此函数时 我的理解 和调试经验 是它不会调用原始函数 为了克服这个问题 我尝