Выполняется ли остальная часть кода в тесте, даже если EXPECT не выполняется?

Я пытаюсь попасть в разработку через тестирование, и у меня есть вопрос о структуре Google Test:

Если у меня есть тест, как

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

Будет ли выполняться последняя строка, где я освобождаю использованную память, даже если вышеприведенный EXPECT не удался?

Если нет, то какие макросы я должен использовать, чтобы получить желаемый результат (т. Е. Проверить, равны ли две вещи, но все равно выполнить очистку памяти)?

0

Решение

Я не могу с уверенностью вспомнить, продолжает ли 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);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]