Использование УТВЕРЖДАЕТ и ОЖИДАЕТ в GoogleTest

В то время как завершение причины макросов ASSERT_* тестового сценария, макросы EXPECT_* продолжают свою оценку. Я хотел бы знать, который является критериями, чтобы решить, использовать ли один или другой.

38
задан martjno 2 April 2010 в 06:21
поделиться

3 ответа

Используйте ASSERT , когда условие должно выполняться - в противном случае тест останавливается прямо здесь. Используйте это, когда оставшаяся часть теста не имеет семантического значения без выполнения этого условия.

Используйте EXPECT , когда условие должно выполняться , но в тех случаях, когда это не так, мы все равно можем получить выгоду от продолжения теста. (Тем не менее, в конце концов, тест все равно завершится неудачно.)

Практическое правило: используйте EXPECT по умолчанию, если только вы не потребуете что-то, что будет удерживаться до конца тесты, и в этом случае вы должны использовать ASSERT для этого конкретного условия.


Это отражено в праймере :

Обычно предпочтительны EXPECT _ * , поскольку они позволяют сообщать о более чем одной неудаче в тесте. Однако вы должны использовать ASSERT _ * , если нет смысла продолжать, когда рассматриваемое утверждение терпит неудачу.

44
ответ дан 27 November 2019 в 03:34
поделиться

Используйте EXPECT_, когда вы

  • хотите сообщить о более чем одной неудаче в вашем тесте

Используйте ASSERT_, когда

  • нет смысла продолжать, когда утверждение не прошло

Поскольку ASSERT_ немедленно прерывает вашу функцию, если она не прошла, возможный код очистки пропускается. Предпочтите EXPECT_ по умолчанию.

19
ответ дан 27 November 2019 в 03:34
поделиться

Проверьте следующую ссылку: Эффективное тестирование C ++ с помощью GoogleTest (слайд 23). Есть хорошее руководство / совет по использованию EXPECT vs ASSERT.

3
ответ дан 27 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: