31

我看到该功能的文档似乎非常重要,因为它在 Google 测试概述功能中并在以下内容中有详细说明:
https ://github.com/google/googletest/blob/master/docs/advanced.md#death-tests

它们看起来像标准assert(),但它们是 Google Test 的一部分,因此是 xUnit 测试框架。因此,我想知道使用这些死亡测试的真正用途或优势是什么。

4

2 回答 2

26

断言是为了确认如果一个函数在当前进程中执行,它会导致程序终止(详细说明死亡测试是从一个子进程调用的,它允许测试在死亡的情况下继续进行)。这很有用,因为某些代码可能会保证程序在失败时终止/中止(例如,如果存在不可恢复的错误),并且单元测试应确认函数遵守其记录的行为,无论它可能是什么。

wiki 页面上的描述确实最好地解释了它:

在许多应用程序中,如果不满足条件,某些断言可能会导致应用程序失败。这些确保程序处于已知良好状态的健全性检查会在某些程序状态损坏后尽早失败。如果断言检查了错误的条件,那么程序可能会在错误状态下运行,这可能导致内存损坏、安全漏洞或更糟。因此,测试此类断言语句是否按预期工作非常重要。

于 2010-09-13T08:15:36.873 回答
2

我认为您链接中的介绍很好地解释了它:

在许多应用程序中,如果不满足条件,某些断言可能会导致应用程序失败。这些确保程序处于已知良好状态的健全性检查会在某些程序状态损坏后尽早失败。如果断言检查了错误的条件,那么程序可能会在错误状态下运行,这可能导致内存损坏、安全漏洞或更糟。因此,测试此类断言语句是否按预期工作非常重要。

由于这些前置条件检查会导致进程死亡,我们将此类测试称为死亡测试。更一般地说,任何检查程序是否以预期方式终止的测试也是死亡测试。

哪一点没有意义?

于 2010-09-13T08:18:25.087 回答