0

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

    // ...
}

有没有办法预先确定特定运行的 s列表testCaseStarting()是什么?SECTION例如,给定:

TEST_CASE("a", "[tag]") {
    SECTION("b") {
    }

    SECTION("c") {
        SECTION("d") { }
        SECTION("e") { }
    }
}

我想要一些方法来获得{b}第一次,{c, d}第二次和{c, e}第三次。有没有办法做到这一点?

4

2 回答 2

1

我不这么认为。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__ ) )
于 2018-05-09T21:28:27.023 回答
1

没有,特别是因为部分可以是“动态的”,因为它们可以隐藏在额外的 if 后面,在循环中运行等等。

于 2018-05-11T14:52:26.483 回答