问题标签 [gmock]

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 回答
1155 浏览

c++ - 模板模拟类中的 MOCK_METHODx() 定义缺少“typename”

我有一个 gmock 和一个模板模拟类的编译器错误问题,它应该用作派生(具体)模拟类的基础。

目的是测试框架支持的回调方法,但框架基类依赖于最终实现(简而言之,它是一个注入静态接口声明的 CRTP 模式样式框架)-

我正在尝试勾勒出我拥有的东西(请不要在第一次尝试中依赖可编译的代码):

这是依赖于 Context 模板参数的框架钩子接​​口定义,框架基类本身将其作为非多态调用处理并提供默认实现:

现在我想实现一个实现IFrameWorkHooks<>接口的模拟类:

我收到一个编译器错误,上面写着:

是否可以以某种方式将宏中使用的 gmock Matcher 专门用于ON_CALL()模板参数?或者我错过了什么。别的??

0 投票
0 回答
497 浏览

c++ - C++ 标准输出在多线程程序中为 NULL

我在 VS 中使用 CMake 创建了项目。后来我添加了 boost 和 gmock 用法。GMock 强迫我在解决方案中的所有项目(主 exe、插件、dll、UT)上设置 /MT 标志。现在我面临一个奇怪的问题。Log4Qt 是我的日志库。在启动期间,在该库的深处创建记录器时

运行时“stdout”的位置

它返回 NULL(只有这个 _iob 数组中的第一项不是 NULL)。好的,我看到这些条目似乎是有效的,因为该表的初始化是

所以在结果当

stdout 未被识别为 _iob 数组的一部分,并且标准 EnterCriticalSection 运行,这导致“ComputerConfShop.exe 中 0x77E58DC9 (ntdll.dll) 处的未处理异常:0xC0000005:访问冲突写入位置 0x00000014。” 我应该添加一些特定的建筑标志吗?或者 gmock 可以很容易地从 /MT 更改为 /MD 库?还是别的什么?

0 投票
1 回答
8367 浏览

c++ - gmock ElementsAreArray() Matcher 在 gmock-matchers.h 中给出编译器错误

我正在做一些测试,以便我可以重构一个旧的 C++ 项目。我正在尝试使用 gmock 匹配器 ElementsAreArray() 匹配两个数组。

其中 value_instance.value 是指向 C 数组的指针。

但是,当我在测试中使用这行代码进行编译时,我从 gmock-matchers.h 文件中得到以下错误输出:

我可能错过了一些非常愚蠢的东西,但我似乎找不到问题所在。

0 投票
2 回答
14532 浏览

c++ - GMock - 使用 ON_CALL 为重载方法返回默认值

我正在尝试为包含三个重载方法的类编写模拟,即:

但这给出了一个错误:

我也尝试过 TypedEq() 而不是“_”,但它给出了更多模糊的错误。我检查了 GMock 常见问题解答和维基,但没有找到解决方案 - 如何使用 ON_CALL 为重载方法返回默认值?

BR,卢卡斯

0 投票
2 回答
1585 浏览

c++ - 在 EXPECT_CALL 和 Gmock 之前使用 ON_CALL 时的奇怪行为

在使用 EXPECT_CALL 语句执行 ON_CALL 语句时,有没有人在 gmock 中看到过奇怪的行为?对我来说,以下代码中的 EXPECT_CALL 语句不起作用(它实际上并没有强制执行 Times 部分):

我尝试过的其他解决方案:

从超类覆盖 myMockMethod 并让它简单地返回一个字符串文字。问题是我无法确定它后来被调用了多少次。

跳过 ON_CALL 部分以支持如下内容:

这会导致编译错误。

另外值得注意的是,我在此示例中使用的字符串文字实际上是自定义的,gmock 无法为其提供默认值(例如 bool)。

0 投票
1 回答
466 浏览

unit-testing - 我将如何模拟在“被测方法”中创建的对象?

我现在对单元测试非常深入,并且遇到了一个相当高级的问题。
有这个类 TrackLoader,它有一个名为 loadTracks(...) 的方法。我想测试该方法 - 不依赖于文件系统 - 这就是它变得棘手的地方

这是一个相当复杂的问题(恕我直言),所以也许一些代码会有所帮助

主要问题是,实际的 Importer 尝试从给定路径加载文件。为了打破文件系统依赖性,我必须模拟 Importer::parseTrack() 和 Importer::getTrack 以返回有效的曲目(不接触文件系统)。
但我看不到模拟实际 Importer 的方法。我可以模拟 ImporterFactory(使 ::createImporter 非静态),但我将如何模拟 Importer 本身?

这可以在不重构代码本身的情况下完成吗?

0 投票
1 回答
572 浏览

c++ - 使用 cygwin 1.7 为 gtest 设置 Eclipse CDT

我正在使用 cygwin 在 eclipse CDT 中运行一个简单的 gtest 示例,最初我遇到了错误

然后我将库路径从更改D://cygdrive/d/,错误消失了,但现在它告诉

我检查了makefile和objects.mk所有的东西都在那里

我应该怎么做才能解决并使其工作,以便我能够使用 cygwin 在 eclipse 中运行 gmock 和 gtest

0 投票
1 回答
22209 浏览

c++ - 谷歌模拟 ByRef 方法

我有一个将布尔值作为参考参数并返回整数的类:

我为这个类创建了一个模拟:

我在如何设置此类函数的期望时遇到问题,因为我需要将返回值引用参数设置为特定值才能正确创建我的单元测试。如何使用 gmock 处理这种函数?我尝试遵循我认为是文档中的解决方案:

但是要么我不理解这个例子,要么它不适用于这个案例。以前有没有人处理过这种情况?

提前致谢。

0 投票
1 回答
307 浏览

unit-testing - Grails 2.2.2:使用 GMock 在 ControllerTests 中测试拦截器

当我们的代码库还在 Grails 2.1.4 中时,我们的拦截器的这个单元测试可以完全覆盖:

切换到 Grails 2.2.2 后,这似乎不像以前在 2.1.4 中那样涵盖测试。错误“意外的方法调用”被调出,因为它不会像在 2.1.4 中那样通过拦截器。

拦截器的测试方式是否发生了变化?

我四处寻找,似乎没有人对此有答案。关于测试拦截器的文档很少。有任何想法吗?

0 投票
2 回答
8468 浏览

c++ - 为什么 cmake 不定位 gtest 和 gmock 库?

这是我的项目的链接,以防万一。

所以,这是我的CMakeLists.txt文件:

而且,这是我的问题:为什么 cmake 找不到我的 gtest/gmock 库?

我已经进入了他们各自的目录并使用它们构建了它们,共享库./configure && make -j4的简要说明在那里显示了它们。find