Я пытаюсь попасть в разработку через тестирование, и у меня есть вопрос о структуре Google Test:
Если у меня есть тест, как
TEST(SampleTest1, check_and_delete) {
MyClass* obj = func(data);
EXPECT_EQ(data2, obj->attr);
delete obj;
}
Будет ли выполняться последняя строка, где я освобождаю использованную память, даже если вышеприведенный EXPECT не удался?
Если нет, то какие макросы я должен использовать, чтобы получить желаемый результат (т. Е. Проверить, равны ли две вещи, но все равно выполнить очистку памяти)?
Я не могу с уверенностью вспомнить, продолжает ли Google Test обрабатывать тест после первого сбоя, но я думаю, что это так.
Чтобы проверить, просто добавьте поддельный тест и посмотрите, выполняется ли он
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;
}
если второй тест оценивается, то вы знаете, что тест будет продолжен после сбоя. Если он не оценивает вторую функцию wait_eq, то вам нужно будет сделать локальную копию в стеке, а затем удалить указатель до ожидаемого события.
TEST(SampleTest1, check_and_delete) {
MyClass* obj = func(data);
auto objAttr= obj->attr;
delete obj;
EXPECT_EQ(data2, objAttr);
}
Других решений пока нет …