我们有一系列死亡测试来检查特定调试 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 仅在调试中编译,因此当组件在发布中构建时,这些测试将失败。避免这种情况的最佳方法是将 EXPECT_DEATH
测试包装在 DEBUG
检测宏中:
#ifndef NDEBUG
// DEATH TESTS
#endif
或者是否有更好的特定于 Google 测试的方法?
最佳答案
由于 assert() 宏使用预处理器逻辑,因此解决方案也应该在此级别上 - 通过条件编译。 您可以使用 GoogleTest 特定的 DISABLED_ 语法(参见 Temporarily Disabling Tests )并编写类似
#ifdef _DEBUG
#define DEBUG_TEST_
#else
#define DEBUG_TEST_ DISABLED_
#endif
你原来的建议看起来也不错,但是我最好直接写条件:
#ifdef _DEBUG
...
关于c++ - 如何仅在调试中运行 google 死亡测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51134934/