使用断言对函数进行单元测试

问题描述 投票:0回答:1

我有以下断言宏定义:

#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;
}

如何对使用断言宏验证输入参数的函数进行单元测试?或者是否有某种模式可用于验证输入,然后能够对该功能进行单元测试?

c++ unit-testing googletest
1个回答
1
投票

实际上很容易,如果你可以使用googletest。如果你想检查你的程序是否因空文件名而崩溃,简单的死亡测试就可以完成工作:

TEST(xxx, yyy)
{
    ASSERT_DEATH(createFilename("", ""), "");
}

作者

__debugbreak
我猜你使用的是Windows。如果您可以使用 Linux,那么您可以更具体地使用
testing::KilledBySignal
来检查您的程序是否被
SIGTRAP
杀死。

© www.soinside.com 2019 - 2024. All rights reserved.