虽然 ASSERT_* 宏导致测试用例终止,但 EXPECT_* 宏继续其评估。我想知道决定是否使用其中一个的标准。
问问题
62309 次
3 回答
71
ASSERT
在条件必须成立时使用- 如果不成立,则测试就停在那里。当测试的其余部分在没有此条件的情况下没有语义时,请使用此条件。
EXPECT
在条件应该成立时使用,但在不成立的情况下,我们仍然可以从继续测试中获得价值。(不过,测试最终还是会失败。)
经验法则是:EXPECT
默认使用,除非您需要为其余的测试保留一些东西,在这种情况下,您应该ASSERT
针对该特定条件使用。
这在底漆中得到了回应:
通常
EXPECT_*
是首选,因为它们允许在测试中报告多个故障。但是,ASSERT_*
如果在相关断言失败时继续没有意义,则应该使用。
于 2010-04-02T06:24:28.563 回答
23
EXPECT_
当你使用
- 想要在测试中报告不止一次失败
ASSERT_
何时使用
- 断言失败时继续没有意义
由于ASSERT_
如果函数失败会立即中止您的函数,因此可能会跳过可能的清理代码。首选EXPECT_
作为您的默认值。
于 2010-04-02T06:30:01.157 回答
8
除了以前的答案...
ASSERT_
不会终止测试用例的执行。它从使用的任何函数返回。除了测试用例失败之外,它的计算结果为return;
,这意味着它不能用于返回除 之外的函数中void
。除非您对编译器警告感到满意,否则就是这样。
EXPECT_
测试用例失败但没有失败return;
,因此它可以在任何返回类型的函数中使用。
于 2017-02-10T16:05:51.333 回答