gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:23:53 32 4
gpt4 key购买 nike

我在 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com