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

Posted

技术标签:

【中文标题】如何解决此错误:“找不到类 PHPUnit_Extensions_SeleniumTestCase”【英文标题】:How do I solve this error: "Class PHPUnit_Extensions_SeleniumTestCase could not be found" 【发布时间】: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,它不应该在那里吗? 【参考方案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】:

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

    确保安装了 php 的 curl 扩展, 例如对于 ubuntu sudo apt-get install php5-curl 输入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 来摆脱类问题。

【讨论】:

以上是关于如何解决此错误:“找不到类 PHPUnit_Extensions_SeleniumTestCase”的主要内容,如果未能解决你的问题,请参考以下文章

如何解决此科尔多瓦构建错误?

如何解决颤振中的 build.gradle 错误。如何解决此错误“评估项目 ':app' 时出现问题。> 格式错误的 \uxxxx 编码。”

如何解决此解码和语法错误

如何解决此错误“格式错误的 URL”?

创建项目时如何解决此错误?

如何解决此错误格式不正确(无效令牌)