PHPUnit problem - no error messages

做~自己de王妃 提交于 2019-12-12 10:30:10

问题


I've been trying to solve this problem for quite some time.

I have a simple PHPUnit test case with 2 tests. When I run it, I get this output:

PHPUnit 3.5.14 by Sebastian Bergmann.

.

So the first assertion runs, passes. The second assertion, however, causes some PHP error (exception or something), and PHPUnit just dies without any info about what could have gone wrong.

Here is my 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>

Setting syntaxCheck to true doesn't give any additional information about the error. However, it does print twice (before running any tests) that The filename, directory name, or volume label syntax is incorrect.

???

So, does anyone have any ideas what could I do to make PHPUnit report those error messages (the --verbose option didn't help either)?

EDIT: I've found out what has been causing the test to fail. There was a mistyped method name (I rely too much on code assist, I guess). However, this doesn't solve the main problem. Any warnings, errors or exception go unreported by PHPUnit.


回答1:


OK, so if anyone has trouble with getting none or incomplete output from PHPUnit command line, double-check your php.ini configuration directives:

  • error_reporting - should be set to E_ALL | E_STRICT for your development environment
  • display_errors - should be set to On



回答2:


I had the same problem, even with all error reporting enabled.

I tried to put echo statements into my test and setUp methods to find out where it was hanging, but they never appeared. The problem turned out to be PHP's output buffering. When I added the following method to my test:

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

and used $this->debug() instead of plain echo, I was able to see my debug statements. A binary search through the code quickly led to the source of the problem (an invalid database fixture, in my case).



来源:https://stackoverflow.com/questions/6378845/phpunit-problem-no-error-messages

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!