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

Is the rest of the code in a test executed even if an EXPECT fails?

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

如果我有这样的测试

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

即使上面的 EXPECT 失败,我释放已用内存的最后一行是否会执行?

如果不是,我应该使用什么宏来获得我想要的结果(即测试两个事物是否相等,但仍然执行内存清理)?

我记不清 google 测试是否在第一次失败后继续处理测试,但我认为确实如此。 要测试只需添加一个虚假测试并查看它是否执行

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