我如何解决此错误:"找不到类PHPUnit_Extensions_SeleniumTestCase"
我正在尝试使用phpunit运行SeleniumTestCase,但无法使其与phpunit.bat脚本一起运行。
我的目标是在CruiseControl和phpUnderControl中将phpunit与Selenium RC一起使用。这是测试的样子:
require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; class WebTest extends PHPUnit_Extensions_SeleniumTestCase { protected function setUp() { $this->setBrowser('*firefox'); $this->setBrowserUrl('http://www.example.com/'); } public function testTitle() { $this->open('http://www.example.com/'); $this->assertTitleEquals('Example Web Page'); } }
我还在包含Selenium扩展名的include_path和PHPUnit中安装了PEAR。我用pear安装程序安装了这些,所以我想这不是问题。
任何帮助将不胜感激。
谢谢,雷米
解决方案
回答
看看php手册中require_once条目中的注释之一。
http://ie.php.net/manual/zh/function.require-once.php#62838
" require_once(以及该问题的include_once)很慢
此外,如果我们打算使用单元测试和模拟对象(即在要测试的类中包含真实的模拟类之前包括模拟类),则它将无法正常工作,因为require()加载文件而不是类。
回答
我刚刚将测试所在的文件重命名为" WebTest.php"(它包含的类的名称),并且测试现在可以正常运行。
回答
好吧,当我使用内联命令:如果从PhPunit目录启动测试时我有错误,而从测试目录中启动它时我没有错误...
但是我仍然没有硒服务器的访问权限……我是否必须先启动它。
如果是,很奇怪我们没有为PhPUnit指定任何句柄...
回答
这是交易:
如果我们遇到"在(测试用例文件名)中找不到类PHPUnit_Extensions_SeleniumTestCase"的问题,则必须执行以下两项操作:
1.将测试用例文件重命名为它包含的类的名称
2.我们应该使用测试从文件夹中启动phpunit。
这应该可以解决问题。
安德鲁
回答
不要以为安装梨没有问题。
我已经通过梨安装了phpunit,但是尽管它说当我查看文件夹时安装也很好,但是我所有这些文件都以.tmp开头,例如PHPUnit / Util / .tmpErrorHandler.php,当我对第一个进行测试时很自然时间给了我与上面相同的错误。在检查完确实没有该文件之后,我将PHPUnit手动安装到与pear和alas相同的文件夹中,一切都很好。我在Mac /豹子里。
关于Selenim RC不要忘记通过在终端中运行来启动它
java -jar /path/to/file/selenium-server.jar
回答
我发现PHPUnit教程中的以下示例正在工作,而我编写的测试中出现了相同的错误。
解决方案令人惊讶。确保课程位于<?php ..?>
块内,而不位于<? ..?>
脚本中的块。
<?php require_once 'PHPUnit/Framework.php'; class StackTest extends PHPUnit_Framework_TestCase { public function testPushAndPop() { $stack = array(); $this->assertEquals(0, count($stack)); array_push($stack, 'foo'); $this->assertEquals('foo', $stack[count($stack)-1]); $this->assertEquals(1, count($stack)); $this->assertEquals('foo', array_pop($stack)); $this->assertEquals(0, count($stack)); } } ?>
回答
希望这是一个比这里给出的答案更明确的答案(这并没有解决我的问题)。如果出现此错误,请检查PEAR文件夹,并查看" SeleniumTestCase.php"文件是否确实存在:
/PEAR/PHPUnit/Extensions/SeleniumTestCase.php
如果不是,那么最简单的方法是使用PEAR卸载并重新安装PHPUnit。
pear uninstall phpunit/PHPUnit pear uninstall phpunit/PHPUnit_Selenium pear install phpunit/PHPUnit
完成上述操作并仅执行一次安装后,PHPUnit_Selenium也已自动安装,我不确定这是否是典型的,因此可能需要做一些...
pear install phpunit/PHPUnit_Selenium
如果需要,还请参见http://www.phpunit.de/manual/3.5/en/installation.html了解PEAR频道信息...