Подтвердить что ты не робот

Что такое Google Test, тесты на смерть

Я видел, что документация по этой функции выглядит довольно значительной, поскольку она в обзорах Google Test и подробно описана в:
https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#death-tests

Они выглядят как стандартные assert(), но они являются частью Google Test, поэтому для платформы тестирования xUnit. Поэтому мне интересно, каково реальное использование или преимущество использования этих тестов смерти.

4b9b3361

Ответ 1

Утверждение заключается в том, чтобы подтвердить, что функция приведет к завершению программы, если она была выполнена в текущем процессе (подробности объясняют, что тест смерти вызывается из подпроцесса, который позволяет продолжить тесты, несмотря на смерть). Это полезно, потому что какой-то код может гарантировать прерывание/прерывание программы при сбое (например, если произошла безвозвратная ошибка), а модульные тесты должны подтвердить, что функция придерживается своего документированного поведения, независимо от того, что это может быть.

Описание на странице wiki действительно объясняет это лучше всего:

Во многих приложениях существуют утверждения, которые могут привести к сбою приложения, если условие не выполняется. Эти проверки здравомыслия, которые гарантируют, что программа находится в известном хорошем состоянии, должны терпеть неудачу в самое ближайшее время после повреждения какого-либо состояния программы. Если утверждение проверяет неправильное состояние, то программа может действовать в ошибочном состоянии, что может привести к повреждению памяти, дырам в безопасности или к худшему. Следовательно, очень важно проверить, что такие утверждения утверждают, что они ожидаются.

Ответ 2

Я думал, что введение в вашу ссылку объясняет это довольно хорошо:

Во многих приложениях существуют утверждения, которые могут привести к сбою приложения, если условие не выполняется. Эти проверки здравомыслия, которые гарантируют, что программа находится в известном хорошем состоянии, должны терпеть неудачу в самое ближайшее время после повреждения какого-либо состояния программы. Если утверждение проверяет неправильное состояние, то программа может действовать в ошибочном состоянии, что может привести к повреждению памяти, дырам в безопасности или к худшему. Следовательно, очень важно проверить, что такие утверждения утверждают, что они ожидаются.

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

Какой бит это не имеет смысла?