我在 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
[...]
现在在控制台中,它会向我显示它预期的值和不适合的值,但不会显示意外调用的位置。有没有办法知道意外调用的来源(例如打印文件、行号或调用堆栈),然后单步执行程序?
最佳答案
如果您使用 --gmock_verbose=info
运行您的测试程序,GoogleMock 将在每次调用 mock 方法后打印堆栈跟踪。然而,这可能会产生巨大的输出,尤其是对于大型测试。您可能希望使用 --gtest_filter=
标志或设置环境变量 GTEST_FILTER 将您的测试限制为特定的测试(即失败的测试)。它使用您要运行的测试的正则表达式。
您还可以在调试器中运行您的代码,并在调用 xQueueGenericSend
时设置断点,然后检查每次调用以查看失败发生的时间。然后,您将能够缩小可能出现错误的位置。
关于c++ - googletest - 找出意外调用的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54870718/