phpunit 单元测试很慢的解决方法
phpunit 单元测试很慢的解决方法
使用 phpunit
来跑全部测试的时候,比较慢的测试都在后面,这很奇怪,如果我们使用 phpunit --filter XxxTest
的时候,事实上并没有那么慢。
既然单个文件跑的时候很快,那我试试一个文件一个文件来跑。
如下:
#!/bin/sh set -eo pipefail for i in $(find tests -type f -name "*Test.php" | xargs -I {} basename {} .php) do vendor/bin/phpunit --configuration phpunit.xml --filter $i done
里面的 set -eo pipfail
解释以下:
set -e 表示一旦脚本中命令返回值不是 0,脚本立即退出; set -o pipefail 表示在 pipe | 中,只要任何一个命令返回值不是 0(假设是 -1),整个 pipe 返回 -1,即使最后一个命令返回 0。
这样可以保证只要有一个 Test 出错,后面的就不用再跑了,节省时间。