测试过程中立即打印异常和断言失败。

3.4.0 2024-07-25 22:35 UTC

This package is auto-updated.

Last update: 2024-08-29 08:03:34 UTC


README

Pip

Latest version Total downloads Build status Test coverage

PHPUnit 立即打印器

Pip 是一个 PHPUnit 扩展,在测试运行期间立即打印异常和断言失败。通常 PHPUnit 会将失败详情保密到测试运行结束,但有时我们不想等那么久。使用 Pip,所有秘密都会立即揭晓,还有一些额外的优势。

优势

  • 执行测试用例时显示每个测试用例的名称。
  • 以分层颜色带显示每个测试的执行时间。
  • 立即打印发生的异常、断言失败、警告、通知和弃用消息。
  • 无瑕疵测试套件指示器:如果之前的测试有任何失败,成功的点会变成红色感叹号。对于没有滚动回缓冲区的 CI 控制台非常有用。

预览

以下预览有些不典型,但一次显示了所有支持的输出情况。当然,我们期望所有 你的 测试几乎都是绿色的!

Preview image

Pip 不会修改测试摘要;只更改运行时输出。

使用方法

  1. 将依赖项添加到您的 Composer 文件中的 require-dev 部分。

    composer require --dev scriptfusion/pip
  2. 在您的 phpunit.xml 配置文件中声明打印机扩展。

    <extensions>
        <bootstrap class="ScriptFUSION\Pip\PipExtension"/>
    </extensions>
  3. 运行测试!

    vendor/bin/phpunit
  4. 享受立即的测试执行反馈。

配置

可以通过在 phpunit.xml 中的 <bootstrap> 节点下添加 <parameter> 节点来自定义 Pip 的行为,其中 namevalue 属性与下表中的内容相对应。

要求

测试 Pip

通过 CapabilitiesTest 利用打印机的能力。然而,这个测试文件并没有直接运行,因为许多测试都是设计为失败的。相反,我们编写了运行 PHPUnit 内部的测试,每个测试都会调用一个能力测试用例,并验证其输出。

真正的测试,也称为 功能测试,位于 test/functional 目录中,以 PHPT 格式编写。PHPT 是一个 几乎未记录的格式,旨在支持 测试 PHP 本身。PHPUnit 的一个未记录的功能是它对 PHPT 测试规范子集的有限支持,我们利用这一点来使用打印机实现测试 PHPUnit 本身。

要运行测试,只需从项目目录中在命令行上指定 vendor/bin/phpunit -c test。默认情况下,我们运行所有功能 PHPT 测试。要运行 CapabilitiesTest,请指定 vendor/bin/phpunit -c test test/CapabilitiesTest

编写功能测试

要测试特定能力的结果,我们使用 CapabilitiesTest--filter 选项来针对特定的测试用例。每个功能测试包含在文件 --ARGS-- 部分中传递给 PHPUnit 的参数。可以直接将这些参数粘贴到 PHPUnit 命令后面,以查看该测试用例的结果。我们在文件的 --EXPECTF-- 部分中验证输出。

我们必须克服的一个挑战是验证包括 ANSI 转义序列在内的彩色输出。要将特定能力测试的输出管道化到 cat -v,如下例所示。

vendor/bin/phpunit -c test --colors=always test/CapabilitiesTest.php --filter ::testSuccess$ | cat -v

cat 的输出将打印 "转义" 字符为 ^[。我们必须将此字符序列的每个出现替换为实际的转义字符(ASCII 字符 27)。获取真实转义字符的最简单方法是从现有的功能测试中复制它。

通过复制现有测试作为模板创建一个新的功能测试,然后修改PHPUnit参数和预期输出,以匹配我们使用所述技术所期望的结果。别忘了在--TEST--部分为测试提供一个清晰的描述!

灵感来源

感谢以下开源项目,它们启发了这个项目。