PHPUnit问题 - 没有错误消息

时间:2011-06-16 21:27:38

标签: php phpunit symfony

我一直试图解决这个问题很长一段时间。

我有一个简单的PHPUnit测试用例,包含2个测试。当我运行它时,我得到了这个输出:

PHPUnit 3.5.14 by Sebastian Bergmann.

.

所以第一个断言运行,传递。然而,第二个断言导致一些PHP错误(异常或其他),并且PHPUnit在没有任何关于可能出错的信息的情况下死掉。

这是我的phpunit.xml:

<?xml version="1.0" encoding="UTF-8"?>

<phpunit backupGlobals="false"
    backupStaticAttributes="false"
    colors="false"
    convertErrorsToExceptions="true"
    convertNoticesToExceptions="true"
    convertWarningsToExceptions="true"
    processIsolation="false"
    stopOnFailure="true"
    syntaxCheck="false"
    bootstrap="bootstrap.php.cache"
>
    <testsuites>
        <testsuite name="Portal Test Suite">
            <directory>../src/OneSolution/Portal/*Bundle/Tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

syntaxCheck设置为true不会提供有关错误的任何其他信息。但是,它会打印The filename, directory name, or volume label syntax is incorrect.

两次(在运行任何测试之前)

???

那么,有没有人有任何想法可以做些什么来让PHPUnit报告这些错误消息(--verbose选项也无济于事?)

编辑:我发现了导致测试失败的原因。有一个错误的方法名称(我猜太依赖于代码辅助)。但是,这并不能解决主要问题。 PHPUnit 未报告任何警告,错误或异常。

2 个答案:

答案 0 :(得分:15)

好的,所以如果有人从PHPUnit命令行中获取无输出或不完整的输出有问题,请仔细检查php.ini配置指令:

  • error_reporting - 应为您的开发环境设置为E_ALL | E_STRICT
  • display_errors - 应设置为On

答案 1 :(得分:1)

即使启用了所有错误报告,我也遇到了同样的问题。

我尝试将echo语句放入我的测试和setUp方法中以找出它挂起的位置,但它们从未出现过。问题原来是PHP的输出缓冲。当我在测试中添加以下方法时:

protected function debug($text)
{
    echo "\nDEBUG: $text\n";
    flush();
    ob_flush();
}

并使用$this->debug()而不是普通echo,我能够看到我的调试语句。通过代码进行二进制搜索很快就会导致问题的根源(在我的情况下,数据库夹具无效)。