45

Google テスト フレームワークを使用して単体テストをプログラミングしています。しかし、いくつかのアサーションが適切に配置され、有用であるかどうかを確認したいと思います。Google テストでアサートをキャッチする方法はありますか?

テスト中のコード例:

int factorial(int n){
    assert(n >= 0);
    //....
}

そして、テスト:

#include <gtest/gtest.h>
TEST(FactorialTest,assertNegative){
    EXPECT_ANY_THROW({
         factorial(-1);
    });
}

ただしEXPECT_ANY_THROW、アサートはキャッチせず、例外のみをキャッチします。アサーションをキャッチするソリューションを探しています。

4

2 に答える 2

40

Google テストではASSERT_DEATHEXPECT_DEATHおよびその他の関連マクロが提供されます。

この質問とWhat are Google Test, Death Testsはお互いの答えです。それはそれらを重複させますか?;-)

于 2010-09-21T00:06:57.320 に答える
1

EXPECT_FATAL_FAILURE(statement,text) および EXPECT_NONFATAL_FAILURE(statement,text) は、'statement' が失敗したASSERT_x または EXECT_x をそれぞれ呼び出す場合にのみ合格します。

これらのステートメントは、テストに合格します。

EXPECT_NONFATAL_FAILURE( EXPECT_TRUE( 0 ), "" ); EXPECT_FATAL_FAILURE( ASSERT_TRUE( 0 ), "" );

于 2019-11-18T17:48:26.230 に答える