实际函数调用计数与 EXPECT_CALL(*mock, display()) 不匹配

2023-12-13

我正在打电话EXPECT_CALL在模拟函数上display(),但它返回运行时错误

Actual function call count doesn't match EXPECT_CALL(*mock, display())...

output

./GTest_static_example.tst

[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from GTest_static_example
[ RUN      ] GTest_static_example.case1
inside the GTEST_static_class:: display
display called from GTest_static_example
package/web/webscr/GTest_static_example.cpp:70: Failure
Actual function call count doesn't match EXPECT_CALL(*mock, display())...
         Expected: to be called once
           Actual: never called - unsatisfied and active
[  FAILED  ] GTest_static_example.case1 (0 ms)
[----------] 1 test from GTest_static_example (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (0 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] GTest_static_example.case1

 1 FAILED TEST

GTEST_static_class.h

#include<iostream>

using namespace std;
class GTEST_static_class
{   
    public:
    GTEST_static_class()
    {}

    void display()
    {
        cout<< "inside the GTEST_static_class:: display " <<endl;
    } 
};

GTest_static_example.cpp

#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include <iostream>
#include "GTEST_static_class.h"

using namespace std;
using ::testing::Return;


class GTest_static_example : public::testing::Test
{
    public:
    virtual void SetUp();
    virtual void TearDown();
    void call_display()
    {
        GTEST_static_class *_class = new GTEST_static_class();
        _class->display();
        cout<<"display called from GTest_static_example"<<endl;
    }

};


class MockGTEST_static_class : public GTEST_static_class
{
    public:
    MockGTEST_static_class():GTEST_static_class()
    {}

    MOCK_METHOD0(display, void()); 
};


int main(int argc, char* argv[])
{
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

void GTest_static_example::SetUp()
{}

void GTest_static_example::TearDown()
{}

TEST_F(GTest_static_example, case1)
{
    MockGTEST_static_class *mock = new MockGTEST_static_class();
    EXPECT_CALL(*mock,display()).WillOnce(Return());
    call_display();
    delete mock;
}

尝试更多类似的东西:

#include <iostream>
#include <gtest/gtest.h>
#include <gmock/gmock.h>

class GTEST_static_class {
  public:
    virtual void display() { std::cout << "inside the GTEST_static_class:: display\n"; }
    virtual ~GTEST_static_class() {}
};

class MockGTEST_static_class : public GTEST_static_class {
  public:
    MOCK_METHOD0(display, void());
};

class GTest_static_example : public ::testing::Test {
  public:
    void call_display(GTEST_static_class *instance) {
      instance->display();
      std::cout << "display called from GTest_static_example\n";
    }
};

int main(int argc, char * argv[]) {
  ::testing::InitGoogleTest(&argc,argv);
  return RUN_ALL_TESTS();
}

TEST_F(GTest_static_example, case1) {
  MockGTEST_static_class mock;
  EXPECT_CALL(mock, display()).WillOnce(::testing::Return());
  call_display(&mock);
}

您需要传递您期望的类的实际实例。另外,你需要做void display();virtual 如果您希望模拟能够覆盖它。忘记添加virtual不幸的是,它不会生成任何编译器警告或错误 - 这只是您必须注意的事情。你还应该做GTEST_static_class的析构函数虚拟以避免切片。

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

实际函数调用计数与 EXPECT_CALL(*mock, display()) 不匹配 的相关文章

  • 如何防止 Json.NET 将枚举转换为字符串?

    下面的课 public class RequestSections RequestBase public RequestSections Command c Dictionary
  • 在c中用以下结构填充矩阵

    我有以下结构 typedef struct arr integer int size int arr arr arr integer arr arr integer alloc arr integer int len arr arr int
  • 请求的资源不支持 HTTP 方法“GET”

    我的路线配置正确 并且我的方法具有装饰标签 我仍然收到 请求的资源不支持 HTTP 方法 GET 消息 System Web Mvc AcceptVerbs GET POST System Web Mvc HttpGet public st
  • 更改 Visual Studio 2015 扩展中项目内的文件 ProjectItem 的内容?

    如何更改文件的内容 ProjectItem在给定的范围内Project 我想用字符串替换它的所有内容 这个问题有解决办法吗 我想做一些改变ProjectItem CS 文件 通过使用 VSIX 包 以及我现在看到的唯一一种执行此操作的方法
  • 使用inotify监控文件

    我正在使用 inotify 来监视本地文件 例如使用 root temp inotify add watch fd root temp mask 删除该文件后 程序将被阻止read fd buf bufSize 功能 即使我创建一个新的 r
  • 堆栈独立的C/C++蓝牙API?

    我想知道是否有适用于 Windows XP Vista 7 x86 和 x64 的堆栈独立 C C 蓝牙 api 我的目标是创建连接并通过蓝牙发送 接收一些时间关键的数据 我的研究给了我以下选择以及这项任务的缺点 用于蓝牙的 Windows
  • 使用 std::string 导致 Windows“找不到入口点”[重复]

    这个问题在这里已经有答案了 当我用 G C C 编译它时 include
  • 混合 VS2012 平台工具集

    我们正在从 VS2005 切换到 VS2012 update 2 我们正在构建大量 主要是控制台 本机 C 无 MFC ATL 可执行文件 它们使用几个常见的静态链接库 这些可执行文件主要在 Win7 计算机上运行 但有些也部署在较旧的 X
  • DLL 需要访问其应用程序的符号

    在 C 中 DLL 是否可以访问加载它的应用程序的某些符号 我有一个加载插件 dll 的应用程序 这些插件需要访问该应用程序的某些API 是否可以在不创建共享此 API 的新 DLL 的情况下实现此目的 函数指针结构适合这种情况吗 示例 主
  • 是否有更好(更简单)的方法来获取特定域 SID?

    我被指派修改 WinForms 应用程序 主要检查登录用户是否属于特定域 这是我到目前为止所想出的 byte domainSid var directoryContext new DirectoryContext DirectoryCont
  • 如何在单独的类库中管理客户端上下文对象?

    我正在尝试创建一个库 类库 对于共享点 它将拥有所有共享点 dll 来与共享点服务器交互上传文件 文档并创建文档库和文档集 现在这个库可以被使用客户端 例如 Web 应用程序 asp net webform 或 mvc 或控制台应用程序或
  • tcmalloc/jemalloc 和内存池之间有什么区别(以及选择的理由)?

    tcmalloc jemalloc是改进的内存分配器 还引入了内存池以更好地分配内存 那么它们之间有什么区别以及在我的应用中如何选择它们呢 这取决于您的程序的要求 如果您的程序有更多的动态内存分配 那么您 需要从可用的分配器中选择一个内存分
  • 如何检查是否发生溢出? [复制]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • 当应用程序未聚焦时监听按键

    我有一个应用程序 C 4 0 WPF 它是隐藏的 可以通过单击系统托盘图标或我创建的其他框架 停靠在左侧和最上面的小框架 来显示 My customer wants to add a new way to display the appli
  • C#中如何将委托转换为对象?

    我正在使用反射类来调用其他 dll 上的一些方法 方法的参数之一是委托类型 我想通过使用反射来调用这个方法 所以我需要将函数参数作为对象数组传递 但我找不到任何关于 如何将委托转换为对象 提前致谢 委托是一个对象 只需像平常一样创建预期的委
  • 如何在OpenGL中像这样绘制连接的带状线

    我想用以下方式绘制一系列连接线 GL LINE STRIP 我尝试过自己编写代码 但没有得到想要的结果 所以我来到这里 帮助我找出我错在哪里 这里我只给出我的draw 函数 glBegin GL LINE STRIP glVertex2f
  • 第一个随机数始终小于其余随机数

    我碰巧注意到 在 C 中 使用 std rand 方法调用的第一个随机数大多数时候都明显小于第二个随机数 关于 Qt 实现 第一个几乎总是小几个数量级 qsrand QTime currentTime msec qDebug lt lt q
  • C中的pipe()和fork()

    我需要创建两个子进程 一个子进程需要运行命令 ls al 并将其输出重定向到下一个子进程的输入 而下一个子进程又将对其输入数据运行命令 sort r n k 5 最后 父进程需要读取该数据 已排序的数据 并将其显示在终端中 终端中的最终结果
  • MsBuild 在 Visual Studio Online 上找不到恢复的 NuGet 包

    我尝试构建一个存储在 Visual Studio Online 上的外部 GIT 存储库中的解决方案 它有以下步骤 1 Git 恢复 有效 2 NuGet 恢复 有效 3 构建 不起作用 查看日志时我的第一个猜测是 MsBuild 没有查找
  • AddressAccessDeniedException :无需 netsh 即可解决它?

    我遇到了异常AddressAccessDeniedException因为我的processus没有注册URL的权限 我首先以管理员身份运行我的程序 好的 它成功了 但我现在想要分发我的应用程序 并且我希望每个用户都能够运行它 而不必成为管理

随机推荐

  • 为 ios 构建一个具有电子签名功能的应用程序,可能使用单点触控?

    这只是一个简单的问题 因为我在谷歌上搜索并只找到了已经具有此功能的应用程序 但我如何着手创建一个能够捕获电子签名的应用程序 这可能吗 Xamarin 的组件商店有一个签名板执行此操作的组件 我也从头开始写过类似的东西 这并不是特别困难 代码
  • Tensorflow Estimator API 以 eval 模式保存图像摘要

    目前 我尝试使用 Tensorflow 的新 Estimator API 在自定义图像数据集上训练自动编码器 到目前为止一切正常 我遇到的唯一问题是当模型处于评估模式时将输入和输出图像保存为摘要 我在训练模式下创建的所有图像摘要都正确存储并
  • 该解决方案中信号量的使用是否正确?

    Problem 我必须增加 x1 和 x2 变量 这应该由单独的线程完成 并且在两个变量的上一个增量未完成之前不应调用两个变量的下一个增量 建议的解决方案 初始化 4 个信号量并调用单独的线程来单独递增变量 2 个信号量用于将消息传递到线程
  • C++/CX WinRT 指针的引用计数的线程安全

    我的印象是 考虑到用例 WinRT 对象的引用计数是线程安全的 但我遇到了一个错误 我不知道有什么其他方法可以解释 例如 以下代码很快就会崩溃 ref class C sealed public C virtual C Windows Fo
  • 带复选框的 Java 结果集到 JTable

    我有这段代码 它可以显示数据库中的数据 它运行良好 但我希望它在最后一列有复选框 我在这里找到了一些代码 但它仅适用于预定义的值 而不是来自数据库 如何向 JTABLE swing 添加复选框 截屏 Code public print in
  • Java 初学者 - 计算句子中的单词数

    我应该使用方法来计算句子中的单词数 我写了这段代码 但我不太确定为什么它不起作用 无论我写什么 我只收到 1 个字的计数 如果你能告诉我如何修复我写的内容而不是给我一个完全不同的想法 那就太好了 import java util Scann
  • 是否有“临时函数”之类的东西? [复制]

    这个问题在这里已经有答案了 有临时视图和临时表 是否有 临时函数 我有一个函数 我想在事务期间使用 然后丢弃 类似于临时表的用例 此外 我希望两个并发事务能够创建具有相同名称的相同函数 而无需锁争用 没有CREATE TEMP FUNCTI
  • SurfaceView 中带有 SimpleOnGestureListener 的 Android GestureDetector

    public class GameActivity extends Activity private static final String TAG GameActivity Override public boolean onTouchE
  • 如何在 Angular 中的本地存储中存储文件(2 及更高版本)

    我只想将图像或 pdf 或任何类型的文件存储在本地存储中 那么 有没有办法将文件存储在LocalStorage中呢 这是一个适用于 Angular 6 7 8 的独立服务 它在本地存储中下载 存储和检索文件 import Injectabl
  • 检测 Java 应用程序是否以 Windows 管理员身份运行

    我有一个 Java 应用程序 无论如何 我可以判断该进程是否在 Windows 7 上以管理员权限运行 我找到了一种似乎与平台无关的不同解决方案 它尝试编写系统首选项 如果失败 则该用户可能不是管理员 As 托马斯 扎托建议 您可能希望抑制
  • 使用改造上传文件时出现错误(没有此类文件或目录)

    我正在开发 Android 应用程序 我需要将带有文件的请求发布到服务器 我在用retrofit这样做 我这样做MultipartAPI 请求 然后我用Intent createChooser选择文件 当我这样做的时候问题就出现了enque
  • 使用 Storyboard 在 Mac sdk 中自定义字体

    如何在 Mac 应用程序开发中向情节提要添加自定义字体 我浏览了一些博客 并尝试添加字体书并使用故事板使用这种自定义字体开发一个 NStextfield 但这是系统相关的 我创建了 DMG 并安装在另一台计算机上 它使用默认字体 我以编程方
  • Android 列表视图填充内容的高度

    我在 xml 中定义了一个列表视图 现在我正在设置内容视图setContentView R layout topic layout 我里面有 5 个项目 目前它只填充列表视图高度的一半 但我希望它完全填充高度 这样我在底部就没有任何空间 我
  • 如何从文本文件中删除标点符号[重复]

    这个问题在这里已经有答案了 import collections import string with open cipher txt as f f f read replace replace n lower f f strip stri
  • “this”模块的源代码是做什么的?

    如果您打开 Python 解释器 然后输入 import this 如您所知 它会打印 Python 之禅 作者 Tim Peters 美丽总比丑陋好 显式的比隐式的好 简单总比复杂好 复杂总比复杂好 扁平比嵌套更好 稀疏比密集好 可读性很
  • 使用 Nexus REST API 获取给定 groupid/artifactId 的最新工件版本

    我正在尝试使用 nexus REST api 来获取最新版本的 Maven 工件 我可以使用浏览到我正在寻找的特定版本http repo local service local data index a local turbogears s
  • SQL JOIN AND OR 条件

    我有一张桌子说Cases 它使用来自的参考Workers对于三列 还有一张桌子Company工人属于哪个 下面是架构 Cases CaseID CaseNumber Worker1 Worker2 Worker3 Workers Worke
  • React 路由器在刷新后渲染组件

    这是一个奇怪的问题 但是当我尝试使用链接进行重定向时 什么也没有发生 只是 URL 发生了变化 但是当我刷新浏览器时 组件就会被渲染 我究竟做错了什么 My nav js import React from react import Nav
  • Lambda中使用的变量在计算总和时应该是最终的还是有效的最终?

    我有一张包含地图的地图 地图 gt 对于映射中的所有条目 我想计算特定键的总和 例如我的地图是这样的 Key1 Key2 Value A Z 10 10 B Z 40 10 C Y 20 10 我想基本上计算所有key2等于B的总和 所以在
  • 实际函数调用计数与 EXPECT_CALL(*mock, display()) 不匹配

    我正在打电话EXPECT CALL在模拟函数上display 但它返回运行时错误 Actual function call count doesn t match EXPECT CALL mock display output GTest