wackystudio / laravel-test-watcher
为 Laravel 提供的测试文件监视器,根据 @watch 注解自动运行特定的测试用例
Requires
- php: ^7.2|^7.3|^7.4
- illuminate/support: 5.8.*|6.*|7.*|8.*
- league/climate: ^3.5
- react/event-loop: ^1.1
- spatie/laravel-collection-macros: ^6.0|^7.0.3
- symfony/console: ^4.2|5.*
- symfony/finder: ^4.2|5.*
- symfony/process: ^4.2|5.*
- wyrihaximus/react-child-process-promise: ^2.0
- yosymfony/resource-watcher: ^2.0
Requires (Dev)
- orchestra/testbench: 3.*|4.*
- phpunit/phpunit: ^7.0|^8.0|^9.0
README
当你的测试或源代码更改时,运行特定的测试方法
在查看我们的测试工作流程时,我们意识到我们多么频繁地触发测试,特别是单个测试用例或测试用例组。使用像 PHPStorm 这样的 IDE,这可以通过键盘快捷键快速完成,但在其他 IDE 或编辑器中,这并不总是那么容易。因此,我们构建了 Laravel Test Watcher。
与运行整个测试套件或必须分组测试不同,Laravel Test Watcher 可以监视你使用 @watch
注解标注的测试用例。
你可以通过运行 tests:watch
artisan 命令来启动监视器。一旦你保存了一个带有 @watch
注解的测试文件中的测试用例,Laravel Test Watcher 就会自动注意到你已经添加了注解,并会在你的源代码的每次更改中运行测试用例。
当你完成测试用例的测试后,你可以通过再次移除 @watch
注解来告诉 Laravel Test Watcher 停止监视测试用例;就这么简单。
无需在 IDE 编辑器和终端之间跳转,只需在代码中添加或删除 @watch
注解即可,Laravel Test Watcher 会处理其余部分。
安装
您可以通过 composer 安装此包
composer require wackystudio/laravel-test-watcher
用法
要在测试类中监视一个测试,使用 @watch 注解如下所示
/** * @test * @watch */ public function it_runs_annotated_tests_in_this_test_file() { //... }
如果你没有使用 @test
注解,而是将测试添加到测试方法名称中,你可以像这样监视测试用例
/** * @watch */ public function test_it_runs_annotated_tests_every_time_source_code_changes() { //... }
要监视测试和源代码文件的变化,像这样通过 Laravel Artisan 运行测试监视器
php artisan tests:watch
注意:对于数据库测试,我们建议你创建一个包含专用测试数据库详细信息的 .env.testing
环境文件。如果你不这样做,Laravel Test Watcher 将会测试 .env
文件中给出的数据库,我们不推荐这样做。
配置
默认情况下,Laravel Test Watcher 会监视 app
、routes
和 tests
文件夹中的所有文件,这意味着这些目录中任何文件的更改都会使 Laravel Test Watcher 运行所有监视的测试用例。
如果你想配置 Laravel Test Watcher 应该监视哪些目录,你可以通过运行 vendor:publish
artisan 命令来发布配置文件,如下所示
php artisan vendor:publish
仅发布 Laravel Test Watcher 的配置文件或选择配置标签以发布所有 Laravel 应用程序中所有包的配置文件。
限制
尽管 Laravel Test Watcher 可以监视你想要的任何数量的测试,但它的意图不是让你在测试套件中的每个测试用例上都使用它,而是使用它来测试你当前正在实施的功能的测试。
由于无法告诉 PHPUnit 同时运行多个单个测试用例,因此所有测试用例都在自己的 PHPUnit 会话中运行,这使得测试执行速度略慢。
如果你需要运行所有测试,我们建议你运行一个老式的
./vendor/bin/phpunit
这将快速运行你的测试套件中的所有测试。
当通过 artisan 命令启动 Laravel 测试监视器时,它会启动整个 Laravel 应用程序并加载 .env
文件中定义的环境变量。这引发了一些问题,因为 PHPUnit 在运行测试时不会覆盖已加载的环境变量,导致每个测试运行都使用已加载的环境变量,而不是应该使用的测试环境变量。为了解决这个问题,Laravel 测试监视器需要一个 .env.testing
文件,其中定义了你的测试设置的所有环境变量。然后,在 Laravel 测试监视器实例化时,这些变量被用来覆盖环境变量。不幸的是,这意味着你不能使用在 phpunit.xml
文件中定义的环境变量。
测试
composer test
更新日志
有关最近更改的更多信息,请参阅 更新日志。
贡献
有关详细信息,请参阅 贡献指南。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 tgn@wackystudio.com 联系,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。
Laravel 包模板
本包使用 Laravel 包模板 生成。