用另一个断言保护某些断言的最佳方法是什么?

What's the best way to guard some assertions with another assertion?

假设我有这段代码,它只是我的测试用例的一部分:

ASSERT_EQ( 1, p.polygon().num_vertices() );
EXPECT_EQ( blah, p.polygon().at( 0 ) );

我真的不想:

...但是,当然,如果第一个断言失败,我最好不要尝试第二个断言。执行此操作的最佳方法是什么?

如果 C++11 可用,lambda 可用于确定一组断言的范围,而无需单独函数的全部开销:

[=]() {
  ASSERT_EQ( 1, p.polygon().num_vertices() );
  EXPECT_EQ( blah, p.polygon().at( 0 ) );
}();

这可以内嵌在测试用例中(与完整函数不同),不需要命名,并且看起来或多或少像一个作用域块(很好)。显然,这样一个块中的致命断言只会退出该块,因此如果分组断言中包含需要中止整个测试用例的断言,那是不理想的。