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



假设我有此代码,这只是我的测试案例的一部分:

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 ) );
}();

这可以在测试用例中出现在线(与完整功能不同(,不需要命名,并且看起来或多或少像示波器块(好(。显然,在这样一个区块中的致命断言只会退出块,因此,如果分组的断言包括需要中止整个测试案例的断言。

最新更新