如何否定 gtest 中的匹配器断言或期望?

Pao*_*ori 6 c++ tdd unit-testing googletest assertions

我想检查 gtest 中的向量是否不为空,但我想更一般地了解如何检查匹配器的否定。

我通常检查大小大于零

EXPECT_THAT( vector.size(), Gt( 0 ) );
Run Code Online (Sandbox Code Playgroud)

我知道我可以编写自己的匹配器

MATCHER( IsNotEmpty, !negation ? "isn't empty" : "is empty" ) {
if ( !arg.empty() ) {
    return true;
}
*result_listener << "whose size is " << arg.size();
return false;
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否可以简单地否定任何匹配器

Pao*_*ori 9

我发现你可以合成一些匹配器并做类似的事情

EXPECT_THAT( vector, Not( IsEmpty() ) );
Run Code Online (Sandbox Code Playgroud)

还有其他有趣的复合匹配器

AllOf(m1, m2, ..., mn)
AnyOf(m1, m2, ..., mn)
Run Code Online (Sandbox Code Playgroud)