【发布时间】:2012-11-20 00:27:52
【问题描述】:
我正在尝试在应用程序中结合基本的契约式设计(由宏实现,使用内置的断言函数)和 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);
}
所以,我的问题是我应该:
- 切勿测试合同涵盖的条件,或
- 在单元测试期间以某种方式禁用合同检查?
【问题讨论】:
标签: c++ unit-testing c++builder googletest design-by-contract