我们说我有这个代码,这只是我测试用例的一部分:
ASSERT_EQ( 1, p.polygon().num_vertices() );
EXPECT_EQ( blah, p.polygon().at( 0 ) );
我真的不想要:
...但当然,如果第一次失败,我最好不要尝试第二次断言。最好的方法是什么?
答案 0 :(得分:0)
如果C ++ 11可用,则可以使用lambda来定义一组断言,而不需要单独函数的全部开销:
[=]() {
ASSERT_EQ( 1, p.polygon().num_vertices() );
EXPECT_EQ( blah, p.polygon().at( 0 ) );
}();
这可以在测试用例中显示为内联(与完整函数不同),不需要命名,并且看起来或多或少像范围块(好)。显然,这样一个块中的致命断言只会退出块,所以如果分组断言包含需要中止整个测试用例的断言,那就不理想了。