PHPUnit(Phar)仅在测试失败时出现致命错误

时间:2016-06-06 15:46:21

标签: php phpunit phpstorm phar

我选择使用Phar PHPUnit(phpunit-4.8.26.phar)对我自定义构建的PHP框架和应用程序进行单元测试。我使用旧稳定版本的原因是因为我需要与PHP 5.4.29兼容。

我选择不使用Composer来获取PHPUnit的原因是因为它往往会污染我的vendors文件夹中的依赖项。我希望尽可能保持精益。

我正在使用Windows 7 Pro SP1WampDeveloper v5.4.0.1ProPhpStorm 2016.1.2Phing以及一大堆其他很酷的东西来做我的事。

问题

  • CAN 在PhpStorm内成功运行传递单元测试。
  • CAN 从PhpStorm中成功运行一组传递单元测试。
  • 无法在PhpStorm内成功运行FAILING单元测试。
  • CAN 从命令行成功运行传递单元测试。
  • CAN 从命令成功运行一组传递单元测试。
  • 无法从命令行成功运行FAILING单元测试。

而不是PHPUnit显示典型的测试失败消息,而是退出时出现以下错误:

  

警告:require(Composer \ Autoload \ ClassLoader.php):无法打开   stream:没有这样的文件或目录   d:\ WampDeveloper \网站\ qclean.development \引导\ Autoloader.php   在第23行

     

致命错误:require():无法打开所需的' Composer \ Autoload \ ClassLoader.php'   (包含路径=' d:\ WampDeveloper \工具\ PEAR \梨; d:\ WampDeveloper \工具\ PEAR; d:\ WampDeveloper \组件\腓\ PEAR; d:\ WampDeveloper \工具\ PHPMailer的;& #39)   在   d:\ WampDeveloper \网站\ qclean.development \引导\ Autoloader.php   在第23行

屏幕截图以扩展上述内容:

enter image description here

支持信息

我的目录结构:

enter image description here

我的单元测试脚本(' ConfigurationTest.php'):

enter image description here

我的PHPUnit XML配置文件(' TestAll.xml'):

enter image description here

最后我的Autoloader(' Autoloader.php'):

enter image description here

错误和警告表示无法加载Composer\Autoload\ClassLoader.php文件。在我使用Phar时,我不明白为什么要求提供此文件?从互联网上读取片段表明Phar应该有一个内部自动加载器,虽然我无法看到它。

我不想安装Composer只是为了获得它的自动加载器。这会破坏试图单独使用Phar的目的。

我将PHPUnit Phar路径添加到了我的Windows %path%,但这没有任何区别。我知道如果使用PEAR安装PHPUnit,则应该这样做。

任何关于这个'头发拉出问题的帮助'非常感谢...

2 个答案:

答案 0 :(得分:2)

如果查看堆栈跟踪,您会看到错误是在class_exists上触发的。此函数默认调用__autoload。这意味着您将注册您注册的自动加载器。在这种情况下,将调用一个存在于项目之外的类。

因此,您需要在需要该文件之前向自动装带器添加额外的file_exists支票。你需要一个不存在的文件。

if (file_exists($fileName)) {
    require $fileName;
}

或者只是抑制错误(require不会抛出异常,所以请使用@):

@require $fileName;

答案 1 :(得分:1)

您需要执行此操作才能转到Settings > Language & Frameworks > PHP > PHPUnit并选择PHPUnit library - 并将路径设置为phpunit.phar,这就是全部。

enter image description here