问题标签 [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 投票
1 回答
1535 浏览

c++ - 在 GoogleMock 中实现 WillN?

是否有比重复使用更简洁和/或更简洁的方法来设置多个相同的操作WillOnce?例如,有没有办法获得WillRepeatedly基数?

我只能找到链接WillOnce可能后跟单个 的示例WillRepeatedly,这对于我可能希望在调用函数的前 N ​​次返回值然后最后一次返回不同值的情况下不太理想,例如使用模拟在以下示例中表示 obj 并让它循环 N 次:

0 投票
1 回答
5016 浏览

c++ - Google Mock:如何配置自定义消息来解释匹配失败

如果匹配失败,谷歌模拟打印如下消息:

test.cpp:112: EXPECT_CALL(mock_obj, foo( MyMatcher ( bar ) ))...
预期 arg #0 : 等于 [1,2; 3,4]
实际:{ 1 }
预期:被调用一次
实际:从未被调用 - 不满意和活跃

使用自定义匹配器MyMatcher我可以定义一个描述字符串,用于在匹配失败时生成失败消息。但它只定义了消息的Expected arg #0部分。有什么方法可以自定义实际的打印方式吗?

在我的情况下,我不能为bar类重载 operator<<,因为它已经被第三方代码重载不在我的控制之下(这个库定义了bar类和 operator<< )。

0 投票
1 回答
7213 浏览

c++ - 模拟方法的 GoogleTest Expect 调用失败

我是 GTEST 的新手,只是了解 Mock 的工作原理,

我尝试编写简单的程序 Foo.h 和 FooDisplay.h (它需要在构造函数中的 Foo ),还有 MockFoo.cpp (这是测试 Gmock 的主要 GTEST 程序)..

当我模拟并为 Foo 执行 Expect 调用时,它会在执行中抛出以下内容..

日志

Foo.h

FooDisplay.h

MooFoo.cpp

0 投票
2 回答
3427 浏览

c++ - DLL 中的 Google 测试

我想使用 Google Test / Mock 为我的 DLL 中的代码编写单元测试。测试代码应该被编译到我的 DLL 中。

我在 Google Test Primer 中读到这是可能的,但是 gtest 必须编译成 DLL(我猜 gmock 也是如此)。

是否有人编译并使用该框架作为 DLL,并且可以告诉我最重要的项目设置(我使用 VS2010)以及如何使用生成的 DLL 来运行测试?

0 投票
1 回答
896 浏览

c++ - 使用 gmock 进行外部依赖

如何使用 gmock 或 gtest 在此处模拟 CustomStream 外部依赖项?

0 投票
1 回答
131 浏览

googlemock - 不确定这个 gMock 示例中的“A”代表什么

在上面的示例文本中,Describe 方法的参数我不明白。它看起来像一个类名,然后是一个模板,但想要确认。

0 投票
1 回答
12958 浏览

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

我正在调用EXPECT_CALL一个模拟函数display(),但它返回运行时错误

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

输出

GTEST_static_class.h

GTest_static_example.cpp

0 投票
2 回答
2718 浏览

c++ - 模拟非虚拟方法给出编译错误

我需要编写 gtest 来测试一些具有非虚拟方法的现有代码,因此我正在使用以下源进行测试,但我得到了编译错误

package/web/webscr/sample_template_class3.cpp:在函数âint main()â中:package/web/webscr/sample_template_class3.cpp:64:错误:âclass Templatemyclassâ没有名为âgmock_displayâ的成员

sample_template_class3.cpp

0 投票
1 回答
88 浏览

c++ - 我如何(如果有的话)在堆上模拟一个模拟类?

我创建了一个测试模拟类,就像文档中描述的那样简单:

现在我想做这样的事情:

我不确定如何(如果有的话)使用 googlemock 来实现这样的事情。

0 投票
1 回答
1169 浏览

c++ - 如何在没有实现的情况下测试纯虚拟类?

我有以下课程:

现在我想模拟这个类:

但这不起作用!我收到以下错误:

test/input/InputManagerTest.o:在函数MockController::~MockController()': test/input/InputManagerTest.cpp:19: undefined reference toIVirtualController::~IVirtualController()' 中 test/input/InputManagerTest.cpp:19:未定义对 `IVirtualController::~IVirtualController()' 的引用

test/input/InputManagerTest.o:在IVirtualController::IVirtualController()': test/input/../../src/input/IVirtualController.hpp:14: undefined reference toIVirtualController 的函数 vtable 中

测试/输入/InputManagerTest.o:在函数MockController::MockController()': test/input/InputManagerTest.cpp:15: undefined reference toIVirtualController::~IVirtualController()'

测试/输入/InputManagerTest.o:(.rodata._ZTI14MockController[_ZTI14MockController]+0x10): 未定义对“IVirtualController 的类型信息”的引用

搜索告诉我“未定义对 vtable/typeinfo 的引用”错误是由缺少实现、虚拟方法声明后面缺少“= 0”或非虚拟析构函数引起的。IVirtualController 类没有实现,但这应该不是问题,因为 MockController 正在实现它,对吧?注释掉整个 InputManagerTest.cpp 模拟文件“解决”了这个问题,即使 IVirtualController 在另一个类中使用。

我该如何测试它?