即使EXPECT失败,是否仍在执行测试中的其余代码?

时间:2016-09-26 16:14:26

标签: c++ frameworks tdd resource-cleanup

我正试图让自己进入测试驱动开发,我对Google Test框架有疑问:

如果我有像

这样的测试
TEST(SampleTest1, check_and_delete) {
    MyClass* obj = func(data);
    EXPECT_EQ(data2, obj->attr);
    delete obj;
}

即使上面的EXPECT失败,最后一行,即释放使用过的内存也会执行吗?

如果没有,我应该使用哪些宏来获得我想要的结果(即测试两个东西是否相等,但仍然执行内存清理)?

1 个答案:

答案 0 :(得分:0)

我肯定不能确定谷歌测试是否会在第一次失败后继续进行测试,但我认为确实如此。 要测试只是添加一个虚假的测试,看看它是否执行

TEST(SampleTest1, check_and_delete) {
    MyClass* obj = func(data);
    EXPECT_EQ(data2, obj->attr);
    int i = 5, j=5;
    EXPECT_EQ(i, j);
    delete obj;
}

如果评估了第二个测试,那么您就知道测试将在失败后继续。如果它没有评估第二个expect_eq那么你需要在堆栈上制作一个本地副本然后在expect_eq

之前删除指针
TEST(SampleTest1, check_and_delete) {
    MyClass* obj = func(data);
    auto objAttr= obj->attr;
    delete obj;
    EXPECT_EQ(data2, objAttr);
}