代码之家  ›  专栏  ›  技术社区  ›  Wernight

什么是谷歌测试,死亡测试

  •  26
  • Wernight  · 技术社区  · 14 年前

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

    它们看起来像标准的 assert() 但它们是谷歌测试的一部分,所以是XUnit测试框架。因此,我想知道真正的用法是什么 或优势 使用那些 死亡测试 是。

    2 回复  |  直到 6 年前
        1
  •  20
  •   Michael Aaron Safyan    14 年前

    断言是为了确认如果在当前进程中执行某个函数,该函数将导致程序终止(详细信息解释了死亡测试是从允许测试在死亡后继续进行的子进程调用的)。这是有用的,因为有些代码可能保证程序在失败时终止/中止(例如,如果存在不可恢复的错误),并且单元测试应该确认一个函数遵守其文档化的行为,不管它可能是什么。

    维基页面上的描述确实很好地解释了这一点:

    在许多应用程序中,如果不满足某个条件,则断言可能导致应用程序失败。这些健全性检查确保程序处于已知良好状态,在某些程序状态损坏后,是否在可能的最早时间出现故障。如果断言检查了错误的条件,那么程序可能在错误的状态下继续,这可能导致内存损坏、安全漏洞或更糟的情况。因此,测试这种断言语句是否如预期的那样工作是至关重要的。

        2
  •  2
  •   Jon Cage    14 年前

    我认为你链接中的介绍可以很好地解释这一点:

    在许多应用程序中,如果不满足某个条件,则断言可能导致应用程序失败。这些健全性检查确保程序处于已知良好状态,在某些程序状态损坏后,是否在可能的最早时间出现故障。如果断言检查了错误的条件,那么程序可能在错误的状态下继续,这可能导致内存损坏、安全漏洞或更糟的情况。因此,测试这种断言语句是否如预期的那样工作是至关重要的。

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

    哪一点没有意义?