spatie/phpunit-watcher

当源代码更改时自动重新运行PHPUnit测试

1.24.0 2024-05-22 09:31 UTC

README

当源代码更改时自动重新运行PHPUnit测试

Latest Version on Packagist Tests Total Downloads

如果每次修改代码时都能自动重新运行PHPUnit测试,那岂不是很好?这个包正是为此而设计的。

安装此包后,您可以这样做

phpunit-watcher watch

以下是它看起来像什么

watcher screenshot

这将运行测试,并且每当appsrctests目录中的文件被修改时,都会重新运行测试。

想要传递一些参数给PHPUnit吗?没问题,只需附加即可

phpunit-watcher watch --filter=it_can_run_a_single_test

在2017年Laracon EU的精彩演讲中,Amo Chohan 展示了我们的phpunit-watcher的实际应用。

Amo Chohan demo

支持我们

我们在创建顶级开源包上投入了大量资源。您可以通过购买我们的付费产品之一来支持我们。

我们非常感激您从家乡寄给我们明信片,提及您正在使用我们的哪个包。您可以在我们的联系页面上找到我们的地址。我们将发布所有收到的明信片在我们的虚拟明信片墙上

安装

您可以通过以下方式全局安装此包

composer global require spatie/phpunit-watcher

之后,您可以在系统上的任何目录中运行phpunit-watcher watch

或者,您可以将包作为项目的dev依赖项本地安装

composer require spatie/phpunit-watcher --dev

本地安装后,您可以使用vendor/bin/phpunit-watcher watch运行它

用法

所有示例都假设您已全局安装了包。如果您选择本地安装,请在每个提到phpunit-watcher的地方添加vendor/bin/

您可以使用以下命令启动监视器

phpunit-watcher watch

这将运行测试,并且每当srctests目录中的文件被修改时,都会重新运行测试。

想要传递一些参数给PHPUnit吗?没问题,只需附加即可

phpunit-watcher watch --filter=it_can_run_a_single_test

关于交互命令的说明

当从Composer脚本运行phpunit-watcher时,您可能需要重定向输入,以便交互式命令能够正常工作,并且禁用默认的超时

{
    "scripts": {
        "test:watch": [
            "Composer\\Config::disableProcessTimeout",
            "phpunit-watcher watch < /dev/tty"
        ]
    }
}

在Windows上,目前不支持TTY,因此已禁用所有交互。虽然监视更改的功能正常工作,但在初始调用phpunit-watcher时必须提供PHPUnit的任何参数。

自定义

工具的行为的某些方面可以进行修改。选项文件可以命名为.phpunit-watcher.ymlphpunit-watcher.ymlphpunit-watcher.yml.dist。工具将按此顺序查找文件。

如果项目目录中没有配置文件,则工具将检查项目目录的父目录中是否存在文件。

以下是一些示例内容。请继续阅读,以获取所有选项的更详细说明。

watch:
  directories:
    - src
    - tests
  fileMask: '*.php'
notifications:
  passingTests: false
  failingTests: false
phpunit:
  binaryPath: vendor/bin/phpunit
  arguments: '--stop-on-failure'
  timeout: 180

自定义监视目录和文件

您可以通过在项目目录中创建名为.phpunit-watcher.yml的文件来自定义要监视的目录。以下是一些示例内容

watch:
  directories:
    - src
    - tests
  exclude:
    - lib
  fileMask: '*.php'
  ignoreDotFiles: true
  ignoreVCS: true
  ignoreVCSIgnored: false

有关Finder的详细信息,请参阅文档

如果您在处理大型仓库时遇到性能延迟,请尝试为不需要监视的任何大型子目录添加 exclude 条目。启用 ignore... 选项也可能很有帮助。同时,确保您也使用了 '*.php' 文件掩码。

桌面通知

默认情况下,该工具将在测试通过或失败时显示桌面通知。如果您想禁用某些桌面通知,请通过添加 notifications 键更新 .phpunit-watcher.yml

notifications:
  passingTests: false
  failingTests: false

帮助信息

默认情况下,该工具将在每次运行后显示键盘操作的辅助信息。您可以通过在 .phpunit-watcher.yml 中添加 hideManual 键来隐藏这些帮助信息。

hideManual: true

自定义PHPUnit

二进制文件

默认情况下,工具使用 vendor/bin/phpunit 作为默认的 PHPUnit 二进制文件,但是,对于那些在其它位置有二进制文件的人来说,自定义这个值可能很有用。

您可以在 .phpunit-watcher.yml 配置文件中指定它。以下是一个示例

phpunit:
  binaryPath: ./vendor/phpunit/phpunit/phpunit

初始参数

如果您想在 watcher 启动时每次都传递相同的参数给 PHPUnit,您可以在 .phpunit-watcher.yml 配置文件中指定这些参数。以下是一个示例

phpunit:
  arguments: '--stop-on-failure'

当使用某些参数启动工具时(例如,phpunit-watcher watch --filter=my_favourite_test),将使用这些参数而不是配置文件中指定的参数。

变更日志

有关最近更改的详细信息,请参阅 CHANGELOG

测试

composer test

贡献

有关详细信息,请参阅 CONTRIBUTING

安全

如果您发现有关安全的错误,请通过电子邮件发送至 [email protected],而不是使用问题跟踪器。

明信片软件

您可以使用此软件包(它是 MIT 许可的),但如果您经常使用它,我们非常欢迎您从家乡寄给我们一张明信片,并说明您正在使用我们的哪个软件包。

我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。

我们将所有收到的明信片 发布在我们的公司网站上

鸣谢

我们在阅读 这篇优秀的文章 后开始创建这个软件包,作者是 Christopher Pitt

交互式命令受到 Jest 的启发。

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件