我如何解决此错误:"找不到类PHPUnit_Extensions_SeleniumTestCase"

时间:2020-03-05 18:57:22  来源:igfitidea点击:

我正在尝试使用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频道信息...