PHPUnit - 将 Bash 脚本输出赋值给变量

5

我正在尝试从PHPUnit捕获我的测试套件的输出,以确定是否发生了失败。 但是,当我尝试将输出存储在bash变量中时,变量总是为空:

PHPUNIT_RESULT=`vendor/bin/phpunit`

if [ -z "$PHPUNIT_RESULT" ]; then
        echo "something there!
fi

然而,这个变量似乎总是为空。

编辑:示例输出

PHPUnit 3.4.5 by Sebastian Bergmann.

......F.......F

Time: 0 seconds, Memory: 8.00Mb

There was 1 failure:

1) MyTest::testTemp
Failed asserting that <boolean:false> is true.

/path/to/myTest.php:68

FAILURES!
Tests: 4, Assertions: 5, Failures: 1, Incomplete: 1.

首先,一般来说,在bash中使用反引号进行命令替换是不被鼓励的。请改用$(...)语法。无论哪种情况,vendor/bin/phpunit的预期输出是什么? - Sebastian Lenartowicz
1
@SebastianLenartowicz 谢谢您提供的信息。我也尝试使用 $(),结果相同。我已经更新了问题并附上了样本输出。它是多行输出。 - djt
3
你已经看过这个链接了吗? - Matteo
不要忘记,-z 运算符检查空字符串 - 因此,如果你打印出 "Something there!",它实际上意味着你正在获得输出! - Sebastian Lenartowicz
1
@Matteo,感谢您提供的链接,它带来了一些有用的结果。 - djt
1个回答

6

如果有任何测试失败,PHPUnit 将以非零状态退出。可以使用 $? 变量来检查。

./vendor/bin/phpunit /path/to/myTest.php

if [ $? -ne 0 ]; then
        echo "failed test"
fi

1
谢谢你。这正是我最终所做的。 - djt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接