web-dev-qa-db-ja.com

Googleテストでアサートをキャッチする方法は?

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

テスト中のサンプルコード:

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

そしてテスト:

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

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

36
Killrazor

Googleテストは ASSERT_DEATHEXPECT_DEATHおよびその他の関連マクロ

この質問と Googleテスト、デステストとは は、お互いの答えです。それはそれらを複製させますか? ;-)

30
Steve Jessop

EXPECT_FATAL_FAILURE(statement、text)とEXPECT_NONFATAL_FAILURE(statement、text)はpassのみ 'statement'がfailing ASSERT_xまたはEXECT_xを呼び出した場合。

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

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

0
Michael