【发布时间】:2018-07-03 14:42:41
【问题描述】:
我们有一系列的死亡测试来检查特定的调试 asserts 触发。例如,我们构造这样的东西:
LockManager::LockManager(size_t numManagedLocks) :
_numManagedLocks(numManagedLocks)
{
assert(_numManagedLocks <= MAX_MANAGABLE_LOCKS &&
"Attempting to manage more than the max possible locks.");
我们对其失败进行了测试:
EXPECT_DEATH(LockManager sutLockManager(constants::MAX_NUMBER_LOCKS + 1),
"Attempting to manage more than the max possible locks.");
由于 assert 只在 debug 中编译,当组件在 release 中构建时,这些测试将失败。避免这种情况的最佳方法是将EXPECT_DEATH 测试包装在DEBUG 检测宏中:
#ifndef NDEBUG
// DEATH TESTS
#endif
或者是否有更好的特定于 Google 测试的方法?
【问题讨论】:
-
您可以使用
--gtest_filter命令行参数排除这些测试。 -
@Thomas,是的,但这很痛苦,因为您必须禁用来自不同测试用例的一系列测试。我们可以将它添加到我们的运行脚本中,但我觉得更好的解决方案是一个特殊的扩展宏或其他东西。
-
您可以使用命名约定,例如以
Death这个词结束所有这些测试。
标签: c++ googletest