什么是Google Test,Death Tests

Wer*_*ght 29 c++ testing googletest

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

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

Mic*_*yan 23

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

维基页面上的描述确实解释得最好:

在许多应用程序中,如果不满足条件,则存在可能导致应用程序失败的断言.这些健全性检查确保程序处于已知良好状态,在某些程序状态损坏后尽早失效.如果断言检查错误的条件,则程序可能以错误状态进行,这可能导致内存损坏,安全漏洞或更糟.因此,测试这样的断言语句是否按预期工作是至关重要的.

  • @Wernight:如果你使用`assert`并且它失败了,那么进程停止,因此单元测试停止,没有生成报告等.通过在另一个进程中启动测试,可以监视它是否按预期停止,报告如果没有,等等...... (3认同)
  • @Wernight:不,`ASSERT_EXIT`是一种Google Test.您可以在测试代码中使用它.这意味着,"测试指定的代码退出",就像`ASSERT_THROW`的意思是"测试指定的代码抛出".单独保留代码. (3认同)
  • @Steve:D'OH!了解.死亡测试是测试断言,用于输入单元测试代码,就像`ASSERT_EQ`一样,在给定一些输入的情况下检查程序是否存在或以某种方式崩溃.所以在程序代码中我们仍然使用`assert()`或其他传统方法来关闭/崩溃应用程序. (3认同)