Среда модульного тестирования Catch2 позволяет вам тестовые разделы. Из документов:
TEST_CASE( "vectors can be sized and resized", "[vector]" ) {
std::vector<int> v( 5 );
REQUIRE( v.size() == 5 );
REQUIRE( v.capacity() >= 5 );
SECTION( "resizing bigger changes size and capacity" ) {
v.resize( 10 );
REQUIRE( v.size() == 10 );
REQUIRE( v.capacity() >= 10 );
}
SECTION( "resizing smaller changes size but not capacity" ) {
v.resize( 0 );
REQUIRE( v.size() == 0 );
REQUIRE( v.capacity() >= 5 );
}
// ...
}
Есть ли способ определить впереди, на момент testCaseStarting()
какой список SECTION
Это что особенный пробег? В качестве примера приведено:
TEST_CASE("a", "[tag]") {
SECTION("b") {
}
SECTION("c") {
SECTION("d") { }
SECTION("e") { }
}
}
Я хочу какой-то способ получить {b}
для первого запуска, {c, d}
для второго и {c, e}
для третьего. Есть какой-либо способ сделать это?
Я так не думаю. SECTION
расширяется в INTERNAL_CATCH_SECTION
который просто if
создание заявления SectionInfo
экземпляр класса
:
#define INTERNAL_CATCH_SECTION( ... ) \
if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) )
Нет, тем более что секции могут быть «динамическими» в том смысле, что они могут быть скрыты за дополнительными операциями if, выполняться внутри цикла и так далее.