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);
});
}
答案 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);
});
}