问题标签 [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 回答
1485 浏览

c++ - Google Mocks 测试输出到 XML 不起作用

我已经使用 Google Test 几个月了

(配置).xml

作为 VS2010 测试项目中的命令参数。这一直在努力将测试结果输出到xml。

我现在一直在添加 Google Mocks,我的测试和 Google Mocks 都在工作,但现在我没有在文件中得到测试结果。如何获取测试结果和模拟结果的 XML 文件?

我无法找到有关此的任何信息。

0 投票
2 回答
1943 浏览

c++ - Google Mock 和 shared_from_this 出错?

我在我的测试中遇到以下错误:

未知文件:错误:在测试主体中抛出描述为“tr1::bad_weak_ptr”的 C++ 异常。

一次通过测试一行,我可以看到异常被抛出在我调用的一行:

我需要一个指向代码正在执行的对象的指针,因为我需要将对象设置为它的一个成员的观察者(使用 boost::signals 来实现观察者)。该代码在正常执行时似乎工作正常,但从我的测试代码中我得到了这个错误。

0 投票
2 回答
12897 浏览

c++ - 为 gmock 自动生成模拟类

我正在使用gmock对C++ 代码进行单元测试。我没有使用gtest 框架。我正在使用 Visual Studio 2008 的内置测试框架。

现在我的问题是我必须手动为真实类编写模拟类来进行单元测试。例如,如果我有一个具有 5 个函数的类,那么我必须编写具有 5 个函数的 MockAClass。有什么方法可以自动生成这些类。

0 投票
1 回答
2361 浏览

matcher - 用于输出参数的 googlemock 匹配器

我正在测试我的类是否使用正确的参数调用模拟类的方法。我已经建立了一个基本的期望:

这很好,但我也想验证这个论点。它是一个只有使用输出参数的访问器的对象:

如何定义一个匹配器来检查get_Value放入的值aValue

0 投票
1 回答
2256 浏览

c++ - 死亡测试中奇怪的堆检查器错误

我的一个使用模拟对象和死亡测试的 googletest 单元测试有问题。这是说明问题的最小化代码示例:

输出:

似乎 googlemock 在EXPECT_DEATH断言之后立即检查堆上剩余的模拟对象,但在调用宏之前删除a显然不是一个好的解决方案,因为a可能在被调用的函数中使用。我实际上希望在测试套件解构结束时进行检查。我错过了什么?

0 投票
1 回答
13258 浏览

c++ - 将方法参数传递给 googlemock 中的操作

我使用 Gmock 进行方法调用,它返回 QList heightsFromCsvResult 的元素作为 out 参数。这是当前工作的代码:

第一个参数 lineNumber 来自

是 heightsFromCsvResult.at(lineNumber) 的索引。

现在我尝试以更通用的方式使用 Gmock:

但是这段代码不起作用,因为 mockLineNumber 从来不是由 Gmock 编写的。但是 EXPECT_CALL 是满意的。

有人在代码中看到问题吗?

0 投票
1 回答
153 浏览

c++ - 如何使用 Google Mock 更改分配对象的类型?

我想通过测试分配对象的受保护变量来检查方法的行为。因此,我想为这个分配的对象注入一个模拟对象。我的问题是该对象是在此方法期间创建的,并且没有通过参数给出。

此方法应创建一个 ConfigurationForColor,在受保护的方法 buildConfigurationForColor(...) 中更改其上的受保护变量,并将对象分配给 MappingConfiguration。我想检查 configurationForColor 上的受保护变量。

我可以使用 Google Mock 将 configurationForColor 的类型更改为模拟对象吗?还是他们测试受保护变量的另一种可能性?

0 投票
2 回答
1054 浏览

c++ - 如何在 C++ 中忽略动态链接库中的主要方法

在我们的应用程序中,我们使用了几个动态链接库。我们最近更新了其中一个库的版本。自这个新版本以来,该库的开发人员提供了一个 main 方法(只不过是打印 Hello World)。

问题是我们正在使用 GTest 和 GMock,它们会生成自己的 main 方法。当我们现在运行我们的测试二进制文件时,我们只是得到“Hello World”,所以我们采用了错误的 main 方法。

我们如何强制使用测试的主要方法?

更新:这似乎是一个 GMock/GTest 问题。main 方法通常是生成的,但情况并非如此,因为它现在找到了一个已经存在的 main 方法。

0 投票
2 回答
1163 浏览

c++ - Google Mocked 成员函数中的 std::pair 参数无法编译

我有一个方法接口和一个模拟该接口的类。该方法采用单个参数。只有当该参数是类型时std::pair<Something, Something>,它才会编译失败。我正在使用 MSVC 2010,所以问题可能是编译器或 STL 实现特定的,当然,除非问题与湿件相关,这是我的最佳猜测。我一定遗漏了一些明显的东西。就像纳米探针一样。

实际的测试用例不必取消注释,错误就会显现出来。

std::pair<>目前,我通过将a包装来解决这个问题struct,但这是次优的。

错误消息的长度相当不幸,但它可能会有所帮助:

0 投票
1 回答
1116 浏览

c++ - 如何避免使用 Google Mock 指针?

在我们的项目中,我们使用 Google Mock,但在多个地方,我们在生产代码中进行构造,只是为了确保类是“可模拟的”。我们这样做是因为我们希望获得 Google Mock 的好处,但另一方面我们更希望拥有更优化的生产代码。以下情况是我们经常做的事情,并且想摆脱。

如您所见,这只是一个简化的示例,我省略了细节。基本上我们想摆脱 B 作为指针。我们将它作为指针的原因是我们可以在我们的测试代码中继承 B(模拟它)并使用该 setter 设置它。

有没有办法避免这种情况?我们不能让 B 在班级范围内吗?

谢谢