如何解决此错误:“找不到类 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 编码。”