我看到该功能的文档似乎非常重要,因为它在Google测试概述功能中详细介绍:
https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#death-tests
它们看起来像标准assert()
,但它们是Google Test的一部分,因此是xUnit测试框架。因此,我想知道使用死亡测试的实际用途或优势是什么。
答案 0 :(得分:20)
断言是为了确认一个函数在当前进程中执行时会导致程序终止(详细说明死亡测试是从子进程调用的,它允许测试在死亡时继续进行)。这很有用,因为有些代码可以保证程序在失败时终止/中止(例如,如果存在不可恢复的错误),并且单元测试应该确认函数是否遵守其记录的行为,无论可能是什么。
维基页面上的描述确实解释得最好:
在许多应用程序中,如果不满足条件,则存在可能导致应用程序失败的断言。这些健全性检查确保程序处于已知良好状态,在某些程序状态损坏后尽早失效。如果断言检查错误的条件,则程序可能以错误状态进行,这可能导致内存损坏,安全漏洞或更糟。因此,测试这样的断言语句是否按预期工作是非常重要的。
答案 1 :(得分:2)
我认为你链接中的介绍解释得相当不错:
在许多应用程序中,如果不满足条件,则存在可能导致应用程序失败的断言。这些健全性检查确保程序处于已知良好状态,在某些程序状态损坏后尽早失效。如果断言检查错误的条件,则程序可能以错误状态进行,这可能导致内存损坏,安全漏洞或更糟。因此,测试这样的断言语句是否按预期工作是非常重要的。
由于这些前置条件检查导致进程死亡,我们称这些测试为死亡测试。更一般地说,任何检查程序以预期方式终止的测试也都是死亡测试。
哪一点没有意义?