当ASSERT_ *宏导致测试用例终止时,EXPECT_ *宏继续进行评估。 我想知道决定是否使用其中一个的标准是什么。
答案 0 :(得分:43)
当条件必须时,请使用ASSERT
- 如果不是,则测试会在此处停止。如果没有这个条件,测试的其余部分没有语义含义时使用它。
条件时,请使用EXPECT
,但如果 (尽管如此,测试仍将最终失败。)
经验法则是:默认情况下使用EXPECT
,除非要求为剩余的测试保留某些内容,在这种情况下,您应该使用ASSERT
特殊情况。
这在primer:
中得到了回应通常
EXPECT_*
是首选,因为它们允许在测试中报告多个失败。但是,如果在有问题的断言失败时继续没有意义,则应使用ASSERT_*
。
答案 1 :(得分:19)
时使用
EXPECT_
时使用
ASSERT_
由于ASSERT_
失败后会立即中止您的函数,因此可能会跳过可能的清理代码。
首选EXPECT_
作为默认值。
答案 2 :(得分:5)
除了以前的答案......
ASSERT_
不会终止测试用例的执行。它从任何使用的函数返回。除了测试用例失败之外,它的计算结果为return;
,这意味着它不能用于返回void
以外的函数。除非您对编译器警告没问题,否则就是。
EXPECT_
未通过测试用例但未return;
,因此可以在任何返回类型的函数内使用。
答案 3 :(得分:3)
检查以下链接:Effective C++ Testing Using GoogleTest (幻灯片23)。有关EXPECT与ASSERT使用的良好指导/建议。