Получение разделов, которые будут запускаться в Catch - PullRequest
0 голосов
/ 10 мая 2018

Среда модульного тестирования 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} для третьего. Есть какой-либо способ сделать это?

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Нет, тем более что разделы могут быть "динамическими" в том смысле, что они могут быть скрыты за дополнительными if, запускаться внутри цикла и т. Д.

0 голосов
/ 10 мая 2018

Я так не думаю. 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__ ) )
...