背景一:phpunit中的*.phpt
最近看了一篇关于*.phpt
PhpUnit 支持的文章:https:
//www.moxio.com/blog/32/start-testing-with-phpt-tests-in-phpunit
这里最大的优势:
- 开箱即用 phpunit 支持,无需自定义代码来发现和处理这些文件。
- 每个人似乎都同意的通用格式。
- 可以直接将特定的 *.phpt 指定为 cli 参数。
典型的 *.phpt 文件如下所示:
--TEST--
Basic arithmetic - addition
--FILE--
<?php
var_dump(42 + 1);
?>
--EXPECT--
int(43)
背景二:自我更新的夹具
在此之前,我读到了单元测试,如果存在 cli 变量,可以更新(=覆盖)他们自己的夹具文件:
https ://tomasvotruba.com/blog/2020/07/20/how-to-update-hundreds -of-test-fixtures-with-single-phpunit-run/
然后,以下 cli 命令将覆盖夹具中的“预期”部分以进行失败的测试:
$ UPDATE_TESTS=1 ./vendor/bin/phpunit
然后将查看 git diff,并根据所需的功能更改接受更改,或修复行为。
本文提出的夹具文件格式与文件格式非常相似*.phpt
,但最终格式可以是完全任意的和特定于项目的。
好处:
- 从空的“--EXPECT--”部分开始,并自动生成此部分。
- 在行为更改后自动更新测试,例如在修复错误后,或引入 BC 破坏更改时。
- 在早期开发期间频繁更新固定装置,此时行为还不是很稳定。
- 不再从 cli diff 输出复制/粘贴。
缺点:
- phpunit 没有内置支持。需要自定义代码。如果我想在多个项目中这样做,这不能很好地扩展。
- 不能将 *.phpt 文件作为 cli 参数。
问题
有没有内置的方法可以使用 phpunit 自动更新这些 *.phpt 测试文件?
或者我应该使用phpunit以外的东西吗?