Googleテストフレームワークを使用して、単体テストをプログラミングしています。しかし、いくつかのアサートが適切に配置され、有用であるかどうかを確認したいと思います。 Googleテストでアサートをキャッチする方法はありますか?
テスト中のサンプルコード:
int factorial(int n){
assert(n >= 0);
//....
}
そしてテスト:
#include <gtest/gtest.h>
TEST(FactorialTest,assertNegative){
EXPECT_ANY_THROW({
factorial(-1);
});
}
だが EXPECT_ANY_THROW
はアサートをキャッチせず、例外のみをキャッチします。アサーションをキャッチするソリューションを探しています。
Googleテストは ASSERT_DEATH
、EXPECT_DEATH
およびその他の関連マクロ 。
この質問と Googleテスト、デステストとは は、お互いの答えです。それはそれらを複製させますか? ;-)
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 ), "" );