我有以下断言宏定义:
#define ASSERT_IF(expression) \
if (expression) { \
__debugbreak(); \
}
以及使用断言宏的以下函数:
std::string createFilename(std::string_view name, std::string_view extension) {
ASSERT_IF(name.empty() || extension.empty());
std::string result;
result += name;
result += '.';
result += extension;
return result;
}
如何对使用断言宏验证输入参数的函数进行单元测试?或者是否有某种模式可用于验证输入,然后能够对该功能进行单元测试?
实际上很容易,如果你可以使用googletest。如果你想检查你的程序是否因空文件名而崩溃,简单的死亡测试就可以完成工作:
TEST(xxx, yyy)
{
ASSERT_DEATH(createFilename("", ""), "");
}
作者
__debugbreak
我猜你使用的是Windows。如果您可以使用 Linux,那么您可以更具体地使用 testing::KilledBySignal
来检查您的程序是否被 SIGTRAP
杀死。