我在Eclipse的PHP项目中有以下类和单元测试:
我知道我的单元测试工作,因为我可以在命令行运行它:
现在我想从Eclipse运行此测试。我在Eclipse中设置了PHP Unit,如下所示:
但是,当我运行PHPUnit测试时:
它告诉我它不能包含类文件:
/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运行时找到该类?
答案 0 :(得分:3)
从命令行启动时,“当前目录”具有明确定义的含义:它是您启动命令的目录。
在Eclipse中,“当前目录”是什么?它可能是您从中启动Eclipse的目录,也可能是安装Eclipse的文件夹。
我以前没有在Eclipse中使用PHP,但对于其他语言,我可以在启动配置中的某个地方设置当前目录。如果这不起作用,请定义一个指向项目的变量,然后使用绝对路径(使用该变量作为起点)。
答案 1 :(得分:0)
有同样的问题。通过使用内部PHPUnit向导创建测试找到唯一的解决方案,如此截图:
来源: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插件作为更好的选择。