基本的な Design by Contract (組み込みの assert 関数を使用するマクロによって実装) と Google Test 単体テストをアプリケーションで組み合わせようとしています。
たとえば、次のコードがあります。
AppFavorite* AppFavorites::Add(const UnicodeString& link)
{
REQUIRE(!link.IsEmpty());
...
}
アサート (REQUIRE(!link.IsEmpty());) に達すると IDE が中止されるため、単体テストで次のテストを行うことができません。
TEST(AppFavoritesTest, AddEmpty)
{
AppFavorites favorites;
ASSERT_THROW(favorites.Add(L""), std::invalid_argument);
}
だから、私の質問は、次のいずれかでなければならないということです:
- 契約でカバーされている条件をテストしないでください。
- 単体テスト中の契約チェックを何らかの形で無効にしますか?