t73biz / phpunit-watcher
在源代码更改时自动重新运行PHPUnit测试
Requires
- php: ^7.2 | ^8.0 | ^8.1
- clue/stdio-react: ^2.4
- jolicode/jolinotif: ^2.2
- symfony/console: ^5 | ^6
- symfony/finder: ^6.2
- symfony/process: ^5.4 | ^6
- symfony/yaml: ^5.2 | ^6
Requires (Dev)
- phpunit/phpunit: ^8.6 | ^9.0
Conflicts
- symfony/console: <5.2
This package is auto-updated.
Last update: 2024-09-30 01:54:40 UTC
README
当您更改代码时,是否希望PHPUnit测试能自动重新运行呢?这个包可以做到这一点。
安装此包后,您可以这样做
phpunit-watcher watch
这看起来是这样的
这将运行测试,并在更改了app
、src
或tests
目录中的任何文件时重新运行。
想传递一些参数给PHPUnit吗?没问题,只需将其附加即可
phpunit-watcher watch --filter=it_can_run_a_single_test
在2017年Laracon EU的精彩演讲中,Amo Chohan展示了我们的phpunit-watcher。
安装
您可以通过以下方式全局安装此包
composer global require t73biz/phpunit-watcher
之后,您可以在系统上的任何目录中运行phpunit-watcher watch
。
或者,您可以将此包作为本地dev依赖项安装到项目中
composer require t73biz/phpunit-watcher --dev
本地安装后,您可以使用vendor/bin/phpunit-watcher watch
运行它
使用说明
以下所有示例都假设您已全局安装了此包。如果您选择本地安装,则在提及phpunit-watcher
的地方,请将vendor/bin/
作为前缀。
您可以使用以下命令启动监视器
phpunit-watcher watch
这将运行测试,并在更改src
或tests
目录中的任何文件时重新运行。
想传递一些参数给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的任何参数。
自定义
可以修改工具行为的某些方面。选项文件可以命名为.phpunit-watcher.yml
、phpunit-watcher.yml
或phpunit-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
初始参数
如果您想在监视器启动时每次都传递相同的参数给PHPUnit,您可以在.phpunit-watcher.yml
配置文件中指定这些参数。以下是一个示例
phpunit: arguments: '--stop-on-failure'
当使用一些参数启动工具时(例如phpunit-watcher watch --filter=my_favourite_test
),这些参数将用于配置文件中指定的参数。
变更日志
请参阅变更日志以获取更多有关最近更改的信息。
测试
composer test
贡献
请参阅贡献指南以获取详细信息。
致谢
我们在阅读这篇优秀的文章后开始创建此包,作者为Christopher Pitt
交互式命令灵感来源于Jest。
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。