我正在尝试使用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安装程序安装了这些,所以我猜这不是问题所在。
非常感谢任何帮助。
谢谢,雷米
答案 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)
以下是我如何解决这个问题:
sudo apt-get install php5-curl
sudo pear install phpunit/PHPUnit_Selenium
之后你应该安装缺少的文件
快乐的编码......
答案 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来解决类问题。