我刚刚开始学习PHPUnit,当我创建一个像这样的空类时:
<?php
namespace some'ns;
use some'ns'AClass;
/**
* Test class for the some'ns'AClass class
*/
class AClassTest extends 'PHPUnit_Framework_TestCase {
}
当我运行测试时:
$ phpunit -c .
PHPUnit 4.3.5 by Sebastian Bergmann.
Configuration read from path/to/phpunit.xml.dist
F
Time: 281 ms, Memory: 3.50Mb
There was 1 failure:
1) Warning
Fatal error: Method PHPUnit_Framework_AssertionFailedError::__toString() must not throw an exception in phar:///usr/local/bin/phpunit/phpunit/TextUI/ResultPrinter.php on line 0
Call Stack:
0.0329 339512 1. {main}() /usr/local/bin/phpunit:0
0.0330 339512 2. {main}() /usr/local/bin/phpunit:0
0.1409 779176 3. PHPUnit_TextUI_Command::main() /usr/local/bin/phpunit:605
0.1409 779424 4. PHPUnit_TextUI_Command::main() /usr/local/bin/phpunit:605
0.1409 780048 5. PHPUnit_TextUI_Command->run() phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php:138
0.1410 780544 6. PHPUnit_TextUI_Command->run() phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php:138
0.2650 2779792 7. PHPUnit_TextUI_TestRunner->doRun() phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php:186
0.2650 2780016 8. PHPUnit_TextUI_TestRunner->doRun() phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php:186
0.2806 3526000 9. PHPUnit_TextUI_ResultPrinter->printResult() phar:///usr/local/bin/phpunit/phpunit/TextUI/TestRunner.php:429
0.2806 3526360 10. PHPUnit_TextUI_ResultPrinter->printResult() phar:///usr/local/bin/phpunit/phpunit/TextUI/TestRunner.php:429
0.2808 3529928 11. PHPUnit_TextUI_ResultPrinter->printFailures() phar:///usr/local/bin/phpunit/phpunit/TextUI/ResultPrinter.php:177
0.2808 3530160 12. PHPUnit_TextUI_ResultPrinter->printFailures() phar:///usr/local/bin/phpunit/phpunit/TextUI/ResultPrinter.php:177
0.2808 3530464 13. PHPUnit_TextUI_ResultPrinter->printDefects() phar:///usr/local/bin/phpunit/phpunit/TextUI/ResultPrinter.php:288
0.2808 3530464 14. PHPUnit_TextUI_ResultPrinter->printDefects() phar:///usr/local/bin/phpunit/phpunit/TextUI/ResultPrinter.php:288
0.2808 3530960 15. PHPUnit_TextUI_ResultPrinter->printDefect() phar:///usr/local/bin/phpunit/phpunit/TextUI/ResultPrinter.php:233
0.2808 3531192 16. PHPUnit_TextUI_ResultPrinter->printDefect() phar:///usr/local/bin/phpunit/phpunit/TextUI/ResultPrinter.php:233
0.2809 3532280 17. PHPUnit_TextUI_ResultPrinter->printDefectTrace() phar:///usr/local/bin/phpunit/phpunit/TextUI/ResultPrinter.php:244
0.2809 3532512 18. PHPUnit_TextUI_ResultPrinter->printDefectTrace() phar:///usr/local/bin/phpunit/phpunit/TextUI/ResultPrinter.php:244
引发此异常。出于好奇,有人能告诉我为什么吗?
由于Sebastian Bergmann在GitHub:上的回答,我已经解决了问题
https://github.com/sebastianbergmann/phpunit/issues/1598#issuecomment-72880416
当找不到类的文件时,用PHPUnit配置XML文件的bootstrap
参数指定的自动加载器似乎不能引发任何异常。
这也是PSR-4规范所说的:
自动加载器实现不得引发异常,不得引发任何级别的错误,并且不应该返回值。
我不得不更换自动装弹机。现在它没有抛出任何异常,一切都正常!
无论如何,只是想知道,为什么在错误PHPUnit_Framework_AssertionFailedError
中没有提到我的自动加载器曾经抛出的异常?