В то время как завершение причины макросов ASSERT_* тестового сценария, макросы EXPECT_* продолжают свою оценку. Я хотел бы знать, который является критериями, чтобы решить, использовать ли один или другой.
Используйте ASSERT
, когда условие должно выполняться - в противном случае тест останавливается прямо здесь. Используйте это, когда оставшаяся часть теста не имеет семантического значения без выполнения этого условия.
Используйте EXPECT
, когда условие должно выполняться , но в тех случаях, когда это не так, мы все равно можем получить выгоду от продолжения теста. (Тем не менее, в конце концов, тест все равно завершится неудачно.)
Практическое правило: используйте EXPECT
по умолчанию, если только вы не потребуете что-то, что будет удерживаться до конца тесты, и в этом случае вы должны использовать ASSERT
для этого конкретного условия.
Обычно предпочтительны
EXPECT _ *
, поскольку они позволяют сообщать о более чем одной неудаче в тесте. Однако вы должны использоватьASSERT _ *
, если нет смысла продолжать, когда рассматриваемое утверждение терпит неудачу.
Используйте EXPECT_
, когда вы
Используйте ASSERT_
, когда
Поскольку ASSERT_
немедленно прерывает вашу функцию, если она не прошла, возможный код очистки пропускается.
Предпочтите EXPECT_
по умолчанию.
Проверьте следующую ссылку: Эффективное тестирование C ++ с помощью GoogleTest (слайд 23). Есть хорошее руководство / совет по использованию EXPECT vs ASSERT.