为什么Eclipse在运行PHPUnit测试时无法包含文件?

时间:2011-01-04 16:06:51

标签: eclipse phpunit

我在Eclipse的PHP项目中有以下单元测试

alt text

我知道我的单元测试工作,因为我可以在命令行运行它:

alt text

现在我想从Eclipse运行此测试。我在Eclipse中设置了PHP Unit,如下所示:

alt text

但是,当我运行PHPUnit测试时:

alt text

它告诉我它不能包含类文件:

/usr/bin/php -c /var/folders/UA/UAv38snBHd0QMgEPMCmM9U+++TM/-Tmp-/zend_debug/session4910937990995915704.tmp -d asp_tags=off /Applications/eclipse/plugins/org.phpsrc.eclipse.pti.tools.phpunit_0.5.0.R20101103000000/php/tools/phpunit.php --log-junit /var/folders/UA/UAv38snBHd0QMgEPMCmM9U+++TM/-Tmp-/pti_phpunit/phpunit.xml /Volumes/data/domains/et/extjslayout/phpunittest/tests
PHP Warning:  include_once(../Product.php): failed to open stream: No such file or directory in /Volumes/data/domains/et/extjslayout/phpunittest/tests/ProductTest.php on line 3
PHP Warning:  include_once(): Failed opening '../Product.php' for inclusion (include_path='/usr/local/PEAR') in /Volumes/data/domains/et/extjslayout/phpunittest/tests/ProductTest.php on line 3
PHP Fatal error:  Class 'Product' not found in /Volumes/data/domains/et/extjslayout/phpunittest/tests/ProductTest.php on line 9

为什么PHPUnit能够在从命令行运行时找到该类,而不是从Eclipse运行时找到该类?

2 个答案:

答案 0 :(得分:3)

从命令行启动时,“当前目录”具有明确定义的含义:它是您启动命令的目录。

在Eclipse中,“当前目录”是什么?它可能是您从中启动Eclipse的目录,也可能是安装Eclipse的文件夹。

我以前没有在Eclipse中使用PHP,但对于其他语言,我可以在启动配置中的某个地方设置当前目录。如果这不起作用,请定义一个指向项目的变量,然后使用绝对路径(使用该变量作为起点)。

答案 1 :(得分:0)

有同样的问题。通过使用内部PHPUnit向导创建测试找到唯一的解决方案,如此截图: phpunit test wizard. eclipse

来源:HowTo create a Test Case Class from a PHP Class

但接下来的调查表明,您的测试用例文件应包含对经过测试的代码的引用,例如:require_once 'C:\Apache2\htdocs\jobeet\src\Ibw\JobeetBundle\Utils\Jobeet.php';

使用插件配置的其他实验不会带来好运。所以在我看来PHP Tools中的PHPUnit没有很好的开发插件。考虑使用MakeGood插件作为更好的选择。