您可以监控桩函数执行情况,以验证是否符合某些期望,例如对给定桩函数的调用次数或桩函数调用的顺序。期望必须在测试用例中定义,并在测试用例执行完成后进行验证。如果未满足期望,则将生成一条相应的消息并将其输出到结果中。在验证结果之后,在测试用例执行结束时将删除所有期望。

(info)桩函数期望必须位于被测函数的所有调用之前,以确保所有的桩函数调用都被计算在内。

您可以为通过已启用以下选项之一的测试配置创建的桩函数配置桩函数期望:

  • 启用桩函数回调
  • 启用桩函数 API (已弃用)

更多信息,请参阅动态桩函数配置

下表描述了可用的期望类型:    

期望说明
CPPTEST_EXPECT_NCALLS(<func-id>, <value>)

期望 <func-id> 桩函数的调用数量等于 <value>

CPPTEST_EXPECT_NCALLS_MORE_THAN(<func-id>, <value>)

期望 <func-id> 桩函数的调用数量大于 <value>

CPPTEST_EXPECT_NCALLS_LESS_THAN(<func-id>, <value>)

期望 <func-id> 桩函数的调用数量小于 <value>

CPPTEST_EXPECT_NCALLS_IN_RANGE(<func-id>,<min>,<max>)

期望 <func-id> 桩函数的调用数量大于 <min> 但小于 <max>

CPPTEST_EXPECT_CALL_SEQUENCE()
[Add<func-id>|AddNTimes<func-id>]
指定对桩函数的调用的预期序列

示例

以下示例提供了设置桩函数定义期望的典型方法。

桩函数调用数量的期望

为桩函数调用数量设置期望的 API 对于 C 和 C++ 是相同的。 

  • 定义对桩函数确切调用数量的期望:
    在下面的示例中,期望对 foo 桩函数的调用是 3 次。
    CPPTEST_EXPECT_NCALLS("foo",3);
     
  • 定义对桩函数调用数量大于以下值的期望:
    在下面的例子中,期望对 foo 桩函数的调用超过 3 次。
    CPPTEST_EXPECT_NCALLS_MORE_THAN("foo",3);
     
  • 定义对桩函数调用数量小于以下值的期望:
    在下面的示例中,期望对 foo 桩函数的调用少于 3 次。
    CPPTEST_EXPECT_NCALLS_LESS_THAN("foo",3);

  • 定义对桩函数调用数量在以下范围内的期望:
    在下面的示例中,期望对 foo 桩函数的调用在 3 到 7 次的范围内。
    CPPTEST_EXPECT_NCALLS_IN_RANGE("foo",3, 7);

桩函数调用序列的期望

定义桩函数调用序列的期望:

下面的示例设置了对 foo -> goo -> foo (3times) -> goo 桩函数调用序列的期望:

[C]   CPPTEST_EXPECT_CALL_SEQUENCE()->Add("foo")->Add(goo")->AddNTimes("foo", 3)->Add("goo");
[C++] CPPTEST_EXPECT_CALL_SEQUENCE().Add("foo").Add(goo").AddNTimes("foo", 3).Add("goo");

以下情况不符合本示例中所定义的期望:

  • 序列中指定的桩函数没有按照期望的顺序调用
  • 在测试用例结束时,未调用期望序列中某些函数
  • No labels