我在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
[...]
现在在控制台中,向我显示它期望的值和不合适的值,但不显示意外调用的位置。除了逐步执行程序外,是否有办法了解意外调用的来源(例如打印文件,行号或调用堆栈)?
答案 0 :(得分:1)
如果您使用--gmock_verbose=info
运行测试程序,则每次调用模拟方法后,GoogleMock都会打印堆栈跟踪。但是,这可能会产生巨大的输出,尤其是对于大型测试。您可能需要使用--gtest_filter=
标志或设置环境变量GTEST_FILTER将测试限制为特定测试(即失败测试)。它使用您要运行的测试的正则表达式。
您还可以在调试器中运行代码,并在xQueueGenericSend
的调用上设置断点,并检查每个调用以查看何时发生故障。然后,您将能够缩小错误发生的可能范围。