假设我有此代码,这只是我的测试案例的一部分:
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 ) );
}();
这可以在测试用例中出现在线(与完整功能不同(,不需要命名,并且看起来或多或少像示波器块(好(。显然,在这样一个区块中的致命断言只会退出块,因此,如果分组的断言包括需要中止整个测试案例的断言。