如何解决此错误:“无法找到类PHPUnit_Extensions_SeleniumTestCase”

时间:2008-09-16 22:15:47

标签: unit-testing selenium phpunit cruisecontrol phpundercontrol

我正在尝试使用phpunit运行SeleniumTestCase,但我无法使用phpunit.bat脚本运行它。

我的目标是在CruiseControl&amp ;;中使用带有Selenium RC的phpunit。 phpUnderControl。这就是测试的样子:

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');
    }
}

我还在include_path中安装了PEAR,并在Selenium扩展中安装了PHPUnit。我用pear安装程序安装了这些,所以我猜这不是问题所在。

非常感谢任何帮助。

谢谢,雷米

10 个答案:

答案 0 :(得分:16)

希望这是一个比这里给出的更明确的答案(这并没有解决我的问题)。如果您收到此错误,请检查您的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频道信息......

答案 1 :(得分:6)

这是交易:

如果您在“(testcase文件名)中找不到”类PHPUnit_Extensions_SeleniumTestCase“问题,则必须执行以下两项操作:

<强> 1。将测试用例的文件重命名为其包含的类的名称 2。您应该从包含测试的文件夹中启动phpunit。

这可以解决您的问题。

安德鲁

答案 2 :(得分:1)

查看php手册中require_once条目中的一条注释。

http://ie.php.net/manual/en/function.require-once.php#62838

“require_once(和那个重要的include_once)很慢

此外,如果您计划使用单元测试和模拟对象(即在您想要测试的类中包含真实类之前包含模拟类),它将无法工作,因为require()加载文件而不是类。“

答案 3 :(得分:1)

我刚将我的测试所在的文件重命名为“WebTest.php”(它包含的类的名称),现在测试运行正常。

答案 4 :(得分:1)

不要认为梨装置没有问题。

我已经通过pear安装了phpunit,但是当我查看文件夹内的安装顺利时,我将所有这些文件都以.tmp开头,例如PHPUnit / Util / .tmpErrorHandler.php,当我运行测试时很自然它第一次给了我同样的错误。检查确实文件不在那里后,我做了一个PHPUnit手动安装到梨和唉相同的文件夹,一切都很好。我在Mac /豹子。

关于Selenim RC不要忘记通过在终端中运行来启动它 java -jar /path/to/file/selenium-server.jar

答案 5 :(得分:1)

我发现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));
    }
}
?>

答案 6 :(得分:1)

以下是我如何解决这个问题:

  1. 确保已安装php的curl扩展,  例如,对于ubuntu sudo apt-get install php5-curl
  2. 输入sudo pear install phpunit/PHPUnit_Selenium
  3. 之后你应该安装缺少的文件

    快乐的编码......

答案 7 :(得分:1)

尝试:

class WebTest extends \PHPUnit_Extensions_Selenium2TestCase

它可能是命名空间问题,因为它适用于我。

答案 8 :(得分:0)

当我使用内联命令时:如果从PhPunit目录进行lauching测试我从测试目录启动它时会出现错误我没有错误...

但是我仍然没有访问selenium服务器...我是否必须先启动它。

如果是,奇怪的是我们不能指定PhPUnit的任何句柄......

答案 9 :(得分:0)

当它失败时,它并不总是打印出最详细的错误消息。

在运行测试之前,请务必记住启动Selenium。

java -jar selenium-server-standalone-2.39.0.jar

这是一个为我自己工作的代码示例。 http://www.siteconsortium.com/h/p1.php?id=php002。显然,编写测试套件有很多不同的方法,并启动测试用例,但我首先使用set_class_path来解决类问题。