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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

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

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