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 出错,后面的就不用再跑了,节省时间。

 

posted @ 2018-12-28 10:06  丶中医  阅读(450)  评论(0编辑  收藏  举报