ASSERT_ *マクロはテストケースの終了を引き起こしますが、EXPECT_ *マクロは評価を継続します。どちらを使用するかを決定する基準はどれかを知りたいです。
条件mustが成立する場合-テストがそこで停止しない場合は、ASSERT
を使用します。この条件を保持せずに、テストの残りの部分に意味的な意味がない場合に使用します。
条件shouldが保持される場合はEXPECT
を使用しますが、保持されない場合は、テストの継続から値を取得できます。 (ただし、最終的にはテストは最終的に失敗します。)
経験則は次のとおりです。デフォルトでEXPECT
を使用します。ただし、残りのテストのためにrequire何かを保持する場合は、ASSERT
その特定の条件。
これは primer 内にエコーされます:
通常、
EXPECT_*
が推奨されます。テストで複数の障害を報告できるためです。ただし、問題のアサーションが失敗したときに続行する意味がない場合は、ASSERT_*
を使用する必要があります。
使用する EXPECT_
あなたが
使用する ASSERT_
いつ
ASSERT_
は、機能が失敗した場合、すぐに機能を中止し、可能なクリーンアップコードはスキップされます。優先EXPECT_
をデフォルトとして。
以前の回答に加えて...
ASSERT_
は、テストケースの実行を終了しません。使用された関数から返されます。テストケースに失敗するだけでなく、return;
に評価されます。つまり、void
以外を返す関数では使用できません。コンパイラの警告に問題がなければ、そうです。
EXPECT_
はテストケースに失敗しますが、return;
は失敗しないため、任意の戻り値型の関数内で使用できます。
次のリンクを確認してください: GoogleTestを使用した効果的なC++テスト (スライド23)。 EXPECTとASSERTの使用に関する適切なガイドライン/アドバイスがあります。