c++ - googletest - 找出意外调用的位置

标签 c++ unit-testing googletest googlemock

我在 googletest 中运行一些单元测试。我期望对模拟函数的某些调用 (EXPECT_CALL(*rtosMock, xQueueGenericSend( arg , _, _, _)).Times(AtLeast(1));) 有一些不同的值参数。我最终接到了一个具有意外值(value)的电话。

unknown file: Failure

Unexpected mock function call - returning default value.
      Function call: xQueueGenericSend(NULL, 0x7fff38c99e80, 100, 0)
           Returns: 0
Google Mock tried the following 24 expectations, but none matched:

test.cpp:95: tried expectation #0: EXPECT_CALL(*rtosMock, xQueueGenericSend( arg , _, _, _))...
Expected arg #0: is equal to 0x561fede86f74
Actual: NULL
Expected: to be called at least once
Actual: called twice - satisfied and active
[...]

现在在控制台中,它会向我显示它预期的值和不适合的值,但不会显示意外调用的位置。有没有办法知道意外调用的来源(例如打印文件、行号或调用堆栈),然后单步执行程序?

最佳答案

来自文档:https://github.com/google/googletest/blob/master/docs/gmock_faq.md#i-cant-figure-out-why-gmock-thinks-my-expectations-are-not-satisfied-what-should-i-do

如果您使用 --gmock_verbose=info 运行您的测试程序,GoogleMock 将在每次调用 mock 方法后打印堆栈跟踪。然而,这可能会产生巨大的输出,尤其是对于大型测试。您可能希望使用 --gtest_filter= 标志或设置环境变量 GTEST_FILTER 将您的测试限制为特定的测试(即失败的测试)。它使用您要运行的测试的正则表达式。

您还可以在调试器中运行您的代码,并在调用 xQueueGenericSend 时设置断点,然后检查每次调用以查看失败发生的时间。然后,您将能够缩小可能出现错误的位置。

关于c++ - googletest - 找出意外调用的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54870718/

相关文章:

c++ - `for_each` 没有像我预期的那样工作

python - XML 输出包括 setup_module 和 teardown_module

javascript - 使用 Mocha/Chai 测试异步函数时,无法满足期望总是会导致超时

android - 我想运行特定构建类型的单元测试和espresso测试用例

visual-studio - 如何在Visual Studio中设置$(OutDir),$(TargetName),$(TargetExt)和%(Lib.OutputFile)?

c++ - 我需要用左对齐显示 “Monday”,最高的列按降序显示在第一行中

c++ - 为 CString 赋值时获取 <Bad Ptr> 和无效值

c++ - 在单编写器多阅读器情况下,是否需要为uint64_t锁定?

c++ - 在 Ubuntu 12.04 上的 Eclipse 中设置 Google Test 以通过 C/C++ Test Runner 插件运行

c++ - CMake 错误 : Unable to find package GTest