googletest - 找出意外调用的位置
googletest - find out where unexpected call was made
我 运行 在 googletest 中进行一些单元测试。我希望对模拟函数 (EXPECT_CALL(*rtosMock, xQueueGenericSend( arg , _, _, _)).Times(AtLeast(1));
) 的某些调用具有一些不同的 arg
值。我最终接到了一个具有意外价值的电话。
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
的调用上设置断点,并检查每个调用以查看失败发生的时间。然后,您将能够缩小可能出现错误的位置。
我 运行 在 googletest 中进行一些单元测试。我希望对模拟函数 (EXPECT_CALL(*rtosMock, xQueueGenericSend( arg , _, _, _)).Times(AtLeast(1));
) 的某些调用具有一些不同的 arg
值。我最终接到了一个具有意外价值的电话。
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
的调用上设置断点,并检查每个调用以查看失败发生的时间。然后,您将能够缩小可能出现错误的位置。