12

我正在尝试使用 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');
    }
}

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

任何帮助将不胜感激。

谢谢,雷米

4

10 回答 10

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 频道信息...

于 2010-12-15T23:39:45.737 回答
6

这是交易:

如果你有“Class PHPUnit_Extensions_SeleniumTestCase could not be found in (testcase file name)”的问题,你必须做以下两件事:

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

这应该可以解决您的问题。

安德鲁

于 2009-01-23T11:04:18.543 回答
1

查看php手册中require_once条目中的评论之一。

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

“require_once(和 include_once 相关的)很慢

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

于 2008-09-16T22:30:11.150 回答
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));
    }
}
?>
于 2010-01-27T10:50:06.657 回答
1

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

于 2008-09-16T22:43:06.687 回答
1

不要假设 pear 安装没有问题。

我已经通过 pear 安装了 phpunit,但是尽管它说当我查看文件夹内部时安装正常,但我有所有这些以 .tmp 开头的文件,例如 PHPUnit/Util/.tmpErrorHandler.php,所以当我运行第一个测试时很自然时间它给了我与上面相同的错误。在检查该文件确实不存在后,我手动将 PHPUnit 安装到与 pear 相同的文件夹,唉,一切都很好。我在 Mac/豹。

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

于 2009-02-26T14:30:05.453 回答
1

尝试:

class WebTest extends \PHPUnit_Extensions_Selenium2TestCase

它可能是命名空间问题,就像对我一样。

于 2014-10-01T15:53:52.323 回答
1

这是我解决这个问题的方法:

  1. 确保安装了 php 的 curl 扩展,例如 ubuntusudo apt-get install php5-curl
  2. 进入sudo pear install phpunit/PHPUnit_Selenium

之后,您应该安装丢失的文件

快乐的编码...

于 2012-01-30T05:31:18.833 回答
0

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

永远记得在运行测试之前也启动 Selenium。

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

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

于 2014-02-05T03:32:03.317 回答
0

好吧,当我使用内联命令时:如果从 PhPunit 目录启动测试我有错误,而当从测试目录启动它时我没有错误...

但我仍然没有任何对 selenium 服务器的访问权限......我是否必须先启动它。

如果是,奇怪的是我们没有为 PhPUnit 指定任何句柄......

于 2009-01-08T17:03:01.577 回答