玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试

来源:互联网 发布:疯狂追星 知乎 编辑:程序博客网 时间:2024/04/30 22:43

一、前言

“死亡测试”名字比较恐怖,这里的“死亡”指的的是程序的崩溃。通常在测试过程中,我们需要考虑各种各样的输入,有的输入可能直接导致程序崩溃,这时我们就需要检查程序是否按照预期的方式挂掉,这也就是所谓的“死亡测试”。gtest的死亡测试能做到在一个安全的环境下执行崩溃的测试案例,同时又对崩溃结果进行验证。

二、使用的宏

Fatal assertionNonfatal assertionVerifiesASSERT_DEATH(statement, regex`);EXPECT_DEATH(statement, regex`);statement crashes with the given errorASSERT_EXIT(statement, predicate, regex`);EXPECT_EXIT(statement, predicate, regex`);statement exits with the given error and its exit code matchespredicate

由于有些异常只在Debug下抛出,因此还提供了*_DEBUG_DEATH,用来处理Debug和Realease下的不同。

三、*_DEATH(statement, regex`)

1. statement是被测试的代码语句

2. regex是一个正则表达式,用来匹配异常时在stderr中输出的内容

如下面的例子:

复制代码