我正试图让自己进入测试驱动开发,我对Google Test框架有疑问:
如果我有像
这样的测试TEST(SampleTest1, check_and_delete) {
MyClass* obj = func(data);
EXPECT_EQ(data2, obj->attr);
delete obj;
}
即使上面的EXPECT失败,最后一行,即释放使用过的内存也会执行吗?
如果没有,我应该使用哪些宏来获得我想要的结果(即测试两个东西是否相等,但仍然执行内存清理)?
答案 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);
}