Что такое Google Test, Death Tests - PullRequest
       13

Что такое Google Test, Death Tests

26 голосов
/ 13 сентября 2010

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

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

Ответы [ 2 ]

20 голосов
/ 13 сентября 2010

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

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

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

2 голосов
/ 13 сентября 2010

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

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

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

Что из этого не имеет смысла?

...