2013-03-18 56 views
0

当我试图运行在我的新项目的测试,包括目录。该目录布局如下:PHPUnit的尝试给予空后缀

src/ (project's code here)  
test/ 
    EviType/ 
     Main.php 
    phpunit.xml 
composer.json 

PHPUnit的安装与作曲家(所谓的每个项目的依赖):

{ 
    "require-dev": { 
     "phpunit/phpunit": ">=3.7.5" 
    }, 
} 

我跑composer install/update--dev选项。

PHPUnit的配置定义与简约test/phpunit.xml

<?xml version="1.0" encoding="utf-8"?> 
<phpunit colors="true"> 
    <testsuites> 
     <testsuite> 
      <directory suffix="">EviType</directory> 
     </testsuite> 
    </testsuites> 
</phpunit> 

而且在test/EviType/Main.php测试代码也短,因为它可以:

<?php 
class Main extends PHPUnit_Framework_TestCase 
{ 
    public function test() 
    { 
     $this->assertTrue(true); 
    } 
} 

所以,当我运行的PHPUnit:

php54 -C vendor/bin/phpunit -c test/ 

(该系统具有许多PHP版本安装,php54是我/usr/local/php54/bin/php别名)

我得到一对夫妇整齐警告消息:

X-Powered-By: PHP/5.4.5 
Content-type: text/html 

<br /> 
<b>Warning</b>: include_once(/path/to/docs/test): failed to open stream: Success in <b>/path/to/docs/vendor/phpunit/phpunit/PHPUnit/Util/Fileloader.php</b> on line <b>92</b><br /> 
<br /> 
<b>Warning</b>: include_once(): Failed opening '/path/to/docs/test' for inclusion (include_path='/path/to/docs/vendor/phpunit/phpunit/:/path/to/docs/vendor/phpunit/phpunit/../../symfony/yaml:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/php-text-template/:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/php-token-stream/:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/php-file-iterator/:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/php-code-coverage/:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/php-timer/:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/phpunit-mock-objects/:.:/usr/local/php54/lib/php') in <b>/path/to/docs/vendor/phpunit/phpunit/PHPUnit/Util/Fileloader.php</b> on line <b>92</b><br /> 
<br /> 
<b>Warning</b>: include_once(/path/to/docs/test/EviType): failed to open stream: Success in <b>/path/to/docs/vendor/phpunit/phpunit/PHPUnit/Util/Fileloader.php</b> on line <b>92</b><br /> 
<br /> 
<b>Warning</b>: include_once(): Failed opening '/path/to/docs/test/EviType' for inclusion (include_path='/path/to/docs/vendor/phpunit/phpunit/:/path/to/docs/vendor/phpunit/phpunit/../../symfony/yaml:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/php-text-template/:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/php-token-stream/:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/php-file-iterator/:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/php-code-coverage/:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/php-timer/:/path/to/docs/vendor/phpunit/phpunit/vendor/phpunit/phpunit-mock-objects/:.:/usr/local/php54/lib/php') in <b>/path/to/docs/vendor/phpunit/phpunit/PHPUnit/Util/Fileloader.php</b> on line <b>92</b><br /> 
PHPUnit 3.7.14 by Sebastian Bergmann. 

Configuration read from /path/to/docs/test/phpunit.xml 

. 

Time: 0 seconds, Memory: 2.50Mb 

OK (1 test, 1 assertion) 

断言报告让我很开心,但我不明白为什么它甚至试图include目录:

include_once(/path/to/docs/test) 

以及什么神秘failed to open stream: Success条款的含义。它似乎是一个php bug,但它应该像几年前一样修复。

设置是这样的:

<php> 
    <ini name="display_errors" value="0"/> 
</php> 

使这些警告消失,但我觉得有PHPUnit中安装一个更深刻的问题挖出来。

有什么建议吗?

回答

1

你真的应该设置后缀为“.PHP” - 否则PHPUnit的尝试包括有‘’在所有这些文件,这些文件中的所有文件和所有目录。

+0

哦,我现在看到的,我真的应该。谢谢你解决这个问题! 我认为这是PHPUnit的问题。无论给出什么后缀,包括目录都不是正确的事情。 – 2013-03-20 20:25:15