问题标签 [googlemock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
10246 浏览

c++ - 使用 googlemock 时的 SEH 异常

我开始将 googlemock 与 googletest 一起使用,但遇到了我无法弄清楚的 SEH 异常。

错误信息是:

我已经阅读了一些关于 SO 和其他地方的类似问题,但还没有为这样一个简单的例子找到答案。

即这发生在我的真实代码上,但我也在下面非常简单的示例中重现了错误。我正在使用 MSVC2008 构建。

重现错误的代码:

我从控制台的测试输出:

我正在使用自己的主要功能如下:

我猜我在这里犯了一个非常基本的错误,谁能看到我哪里出错了?谢谢!

[原始编辑以使代码和控制台输出匹配]

0 投票
2 回答
2290 浏览

c++ - 如何在 C++ 中存根/模拟非指针成员变量?

许多关于单元测试的网站都说要提取接口和接口代码(这是有道理的),但这需要通过指针使用多态性。是否可以在没有指针的情况下完成此操作,因此我不必修改生产代码?我宁愿不使用指针和管理内存。

  • 允许条件编译。
  • 我专门为我的存根/模拟使用 gmock。

我研究过的一些事情是:

  • 使用参考
    • 涉及编写特殊的复制构造函数或使其不可复制
    • 仍然需要用 new/delete 来管理内存
    • 不确定这是否会导致不可预见的问题
  • 通过代码生成创建指针包装类的集合。界面保持不变,但添加了一些测试方法。
    • 似乎它会工作,但需要保养
    • 我在下面的意思的例子

请注意 gmock 模拟对象是不可复制的,因此我不能构造函数注入它们。(https://groups.google.com/forum/#!topic/googlemock/GD73UXjQowE/discussion

问题示例

指针包装类示例

...

...

0 投票
1 回答
4875 浏览

c++ - 是否可以使用 Google Mock (gmock) 捕获参数?

我打算使用 Google Mock。我需要捕获一个对象引用,以便随后可以从该对象调用一些方法。

Google Mock 是否有任何捕获能力?如果没有,C++ 单元测试的其他选择是什么?一种选择是创建我自己的模拟类来捕获对象。

我正在寻找类似于 Java 的EasyMock的东西。示例(不是真正的代码):

0 投票
1 回答
1745 浏览

c++ - 对 Google Mock 返回的引用所做的更改可以反映在原始值中吗?

对 Google Mock 返回的引用所做的更改可以反映在原始值中吗?

示例测试代码(使用 CppUnit 作为单元测试框架):

示例代码:

我的测试表明这不会更新 的值i,但谷歌对ReturnRefand的描述ReturnRefOfCopy似乎意味着这应该有效,即

  • ReturnRef(variable) - 返回对变量的引用。
  • ReturnRefOfCopy(value) - 返回对 value 副本的引用;副本与动作一样长。

相反,它似乎ReturnRef也返回了对副本的引用。有没有办法使用 Google Mock 来获得这种行为?

0 投票
1 回答
757 浏览

googlemock - 使用 googlemock 将参数传递给 ReturnNew

如何模拟返回一个新对象的方法,该对象的构造函数将方法的参数之一作为它自己的参数?

在上面的示例中,我想使用最初传递给 的参数,而不是new ObjectB()用作 的参数。ReturnNew<ObjectA>()_MockedMethod

0 投票
1 回答
5810 浏览

c++ - Google Mock Actual function call count doesn't match EXPECT_CALL

I am new to Google Mock and was trying my hand with this code, I also checked this link.

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

but was not able to get proper input.

Base.cc

Base_unittest.cc

I am getting error:

Actual function call count doesn't match EXPECT_CALL(obj, get())...

Actual function call count doesn't match EXPECT_CALL(obj, set(2,"hello"))...

So please help and if any tutorials for newbies please refer.

0 投票
2 回答
328 浏览

c++ - 将 wxString 与 Google Mock 一起使用

有没有人在使用 Google Mock 和 wxWidgets 时遇到过运气?我有一个类 Foo ,其设置器在签名中对 wxString 进行 const 引用,如下所示:

然后我继续像这样模拟 Foo:

我的其他模拟效果很好,但是它不喜欢 wxString 参数。当我编译时,我看到以下内容:

要点是 Google Mock 无法确定调用哪个 operator() 函数,因为 wxUniChar 提供的 operator() 函数没有映射到 Google Mock 所期望的。我在“long long int”和“testing::internal::BiggestInt”转换中看到了这个错误。

0 投票
1 回答
6016 浏览

c++ - 谷歌模拟析构函数

我正在尝试熟悉 Google 的模拟框架,以便我可以更轻松地将一些 TDD 应用到我的 C++ 开发中。我有以下界面:

我想验证在删除实例时是否调用了析构函数。所以我有以下 MockSymbol 类:

注意:我在上面省略了包含保护,但它们在我的头文件中。

我还没有达到我实际测试任何东西的地步。我有以下内容:

当我执行我的测试运行程序时,我的其他测试会按照我的预期执行并通过。但是,当执行上述测试时,我收到以下错误:

SymbolTableTests.cpp:11: EXPECT_CALL(*mockSymbol, Die()) 调用分段错误(核心转储)

在过去的几个小时里,我一直在搜索谷歌并尝试不同的东西,但要知道是否有用。有没有人有什么建议?

0 投票
1 回答
203 浏览

googletest - 如果在 Google Mock Framework 中复制了模拟调用,有什么好方法可以检查它

我使用 Google Test 和 Google Mock 进行单元测试,并且需要检查对象的调用,该调用被放置在 std::vector 中。像这样:

我将不胜感激有关完成此任务的任何提示。

0 投票
2 回答
5900 浏览

c++ - 如何在 googlemock 中创建部分(混合)模拟?

当您需要调用真实对象的功能时, Google 建议将调用委托给父对象,但这并不能真正创建部分(混合)模拟。调用真实对象时,任何方法调用都是真实对象的调用,而不是模拟对象的调用,您可能已经在其上设置了操作/期望。如何创建仅将特定方法委托给真实对象的部分模拟,以及对模拟对象的所有其他方法调用?

委托给真实对象示例