我可以让谷歌C ++测试框架断言这个过程不会*死吗?

时间:2014-10-13 22:52:36

标签: c++ googletest

Google C ++测试框架(gtest)提供了“death tests”,我可以断言测试导致(分叉)进程退出,我可以在退出代码上应用谓词。有没有办法断言过程没有退出

我想要实现的是让其余的测试运行,即使其中一个因(例如)访问冲突而死亡。

测试可能看起来像这样。请注意,ASSERT_NO_EXIT不存在。

GTEST_TEST(MyTests, MyTest)
{
    GTEST_ASSERT_NO_EXIT({
        int val1 = 1;
        int val2 = 2;
        GTEST_ASSERT_EQ(val2, val1 + 1);
    });
}

1 个答案:

答案 0 :(得分:0)

这就是诀窍。

#include "gtest/gtest.h"
#include <stdlib.h>

#define GTEST_ASSERT_NO_DEATH(statement) \
    ASSERT_EXIT({{ statement } ::exit(EXIT_SUCCESS); }, ::testing::ExitedWithCode(0), "")

我能够使用上面的宏如下

GTEST_TEST(MyTests, MyTest)
{
    GTEST_ASSERT_NO_DEATH({
        int val1 = 1;
        int val2 = 2;
        GTEST_ASSERT_EQ(val2, val1 + 1);
    });
}