【问题标题】:How do I solve this error: "Class PHPUnit_Extensions_SeleniumTestCase could not be found"如何解决此错误:“找不到类 PHPUnit_Extensions_SeleniumTestCase”
【发布时间】:2010-09-09 19:42:46
【问题描述】:

我正在尝试使用 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 安装程序安装了这些,所以我想这不是问题。

任何帮助将不胜感激。

谢谢,雷米

【问题讨论】:

  • 出于什么原因我在 /PEAR/PHPUnit/Extensions/SeleniumTestCase.php 中找不到 PHPUnit_Extensions_SeleniumTestCase,它不应该在那里吗?

标签: unit-testing selenium phpunit cruisecontrol phpundercontrol


【解决方案1】:

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

【讨论】:

  • 这是我需要做的才能解决这个问题,感谢 farinspace。
  • 嗯,卸载了 phpunit,但现在它说没有可用的版本......太棒了
  • 使用pear install phpunit/PHPUnit 给出了这个错误:invalid package name/package file phpunit/PHPUnit```
  • 虽然我有一段时间没有使用 phpunit,但我认为最好的方法是使用 phar 包,请参阅github.com/sebastianbergmann/phpunit
【解决方案2】:

这是交易:

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

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

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

安德鲁

【讨论】:

    【解决方案3】:

    查看 php 手册中 require_once 条目中的其中一个 cmets..

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

    “require_once(和 include_once 相关的)很慢

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • 另外,在命令行上尝试 PHPUnit 的标志 --syntax-check。否则,PHPUnit 可能会默默地忽略程序中的错误。
          【解决方案7】:

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

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

          之后你应该安装丢失的文件

          编码愉快...

          【讨论】:

            【解决方案8】:

            试试:

            class WebTest extends \PHPUnit_Extensions_Selenium2TestCase
            

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

            【讨论】:

              【解决方案9】:

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

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

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

              【讨论】:

                【解决方案10】:

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

                始终记得在运行测试之前也启动 Selenium。

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

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

                【讨论】:

                  猜你喜欢
                  • 2017-04-13
                  • 2020-10-26
                  • 2022-10-12
                  • 1970-01-01
                  • 2019-09-25
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-09-10
                  • 2011-09-14
                  相关资源
                  最近更新 更多