我正在尝试在应用程序中结合基本的按合同设计(由使用内置断言函数的宏实现)和 Google 测试单元测试。
因此,例如,我有以下代码:
AppFavorite* AppFavorites::Add(const UnicodeString& link)
{
REQUIRE(!link.IsEmpty());
...
}
现在,我的单元测试中不能进行以下测试,因为 IDE 在到达断言时中止 (REQUIRE(!link.IsEmpty());):
TEST(AppFavoritesTest, AddEmpty)
{
AppFavorites favorites;
ASSERT_THROW(favorites.Add(L""), std::invalid_argument);
}
所以,我的问题是我应该:
- 切勿测试合同涵盖的条件,或
- 在单元测试期间以某种方式禁用合同检查?