2011-11-15 124 views
9

我安装的PHPUnit和我的测试类时,类在同一个目录PHP类解决的问题是这样的:运行PHPUnit的测试用例

require_once 'PHPUnit/Framework/TestCase.php'; 

class Test extends PHPUnit_Framework_TestCase {...} 

当我在Eclipse执行PHP脚本,我得到以下错误:

Fatal error: Class 'PHPUnit_Framework_Assert' not found in .../PEAR/PHPUnit/Framework/TestCase.php on line 99

所以我创建了一个普通的PHP类加载测试:

  • a.php只会和B.php在同一目录

a.php只会:

class AA {} 

B.php:

class BB extends AA {} 
new BB(); 

当执行PHP脚本B.php我得到了同样的错误:

Fatal error: Class 'AA' not found in .../B.php on line 2

有必须是PHP能够解决这些类的一个选项,否则PHPUnit无法工作。有任何想法吗?

谢谢。

+2

你怎么执行测试? PHPUnit是一个命令行工具。当你这样使用它时,它会安装它自己的自动加载器,所以通常你不需要任何东西,只要PEAR在你的include_path中。当你从Eclipse运行它时,确保你“作为PHPUnit测试运行”,而不仅仅是一个脚本。 – Gordon

+0

是的,谢谢。在我发布我的问题后,我想了一会儿。 :) – user498380

+0

要我发布它作为答案,以便您可以接受它作为解决方案? – Gordon

回答

6

你不应该装载/需要

require_once 'PHPUnit/Framework/TestCase.php'; 
在测试中

可言。普通的phpunit跑步者应该能够弄清楚。

通常IDES 应该关心PHPUnit的设置正确(或正确地调用它),但如果不奏效,需要

require_once 'PHPUnit/Autoload.php'; 

这应该做的伎俩则因为这是什么需要做PHPUnit正在运行

+0

谢谢。 PTI有一个PHPUnit扩展,但由于某些原因,这个扩展并不适用于我的Eclipse。但是,我将只使用命令行phpunit。 – user498380

+0

也许这与PHPUnit 3.6有关。从我见过的PTI通常工作得很好:) ---反正:如果你的问题解决了,请将其中一个答案标记为“接受”(对其中一个答案选中复选标记文本),让人们知道你的问题已经解决并且他们可以看看另一个问题。 – edorian

+0

我认为其中一个原因是,PHPUnit手册中的第一个练习之一就是指导您这样做。然后你遇到这个错误,并最终在堆栈溢出页面(这是我如何找到它BTW)。 –

0

我在与NetBeans集成时遇到了这个问题。对我来说,解决方案是加载一个bootstrap.php文件,该文件将包含所有必需的依赖项,而不改变我的类文件。

糟糕:刚才意识到您正在使用Eclipse。它应该非常相似。问题可能在于,您的include脚本与Eclipse的工作目录(或者应用程序正常运行的其他目录)相关。但是,这是一个在黑暗中刺伤而不自己太熟悉Eclipse ...