fiunchinho / phpunit-randomizer
以随机顺序执行测试用例,以便检查它们是否有隐藏的依赖
This package is not auto-updated.
Last update: 2024-09-14 14:18:17 UTC
README
PHPUnit 已经内置了与此插件类似的功能,因此您不需要使用此插件。要随机执行测试,只需
vendor/bin/phpunit --order-by=random
您可以通过传递已知的种子来获得相同的顺序(当测试以特定顺序失败时非常有用,因此可以重新运行套件)
SEED=$(head -200 /dev/urandom | cksum | cut -f1 -d " ") echo "Running tests with seed $SEED" vendor/bin/phpunit --order-by=random --random-order-seed=$SEED
一个PHPUnit扩展,允许您以随机顺序执行测试用例。这样,您可以识别依赖于其他测试用例的测试,因为这些测试用例共享某些状态,如对象状态或数据库状态。PHPUnit有一个选项可以在进程隔离中执行测试用例,但当你有很多测试用例时,这需要很长时间。
使用这个库,您不需要修改任何PHPUnit代码。只需安装它,并使用vendor文件夹中的二进制文件(vendor/fiunchinho/phpunit-randomizer/bin/phpunit-randomizer
)来运行您的测试,而不是使用默认的phpunit命令。
安装
composer require --dev fiunchinho/phpunit-randomizer
使用方法
可执行二进制文件位于bin文件夹中,它的工作方式与默认的phpunit文件完全相同,接受相同的参数,除了一个参数:即order
参数。
$ vendor/bin/phpunit-randomizer -h
当您使用此库执行测试时,除非您使用--order rand
参数,否则您将获得与使用常规PHPUnit安装相同的结果。
$ vendor/bin/phpunit-randomizer --order rand
如果您查看输出,您会看到它说测试已经使用随机种子进行了随机化。如果您没有指定任何种子(如上面的示例),则种子将在每次执行测试时随机计算。但是,如果您想重复一个特定的顺序(例如,因为它失败了),您可以在order
参数中指定该种子。
例如,让我们尝试两次执行示例测试(这些测试打印测试用例的名称,这样我们就可以看到它们的执行顺序),并看看顺序如何不同。
在这里,您可以看到在两次执行中测试用例的顺序不同。您还可以看到两种情况中使用的种子(第一个是8639,第二个是4674)。现在,如果我们想重复第二次执行的顺序,我们可以选择相同的种子。
正如您所看到的,顺序完全相同。