PHPUnit&;硒2如果一个病例失败,所有病例均失败

PHPUnit&;硒2如果一个病例失败,所有病例均失败,php,phpunit,selenium-webdriver,Php,Phpunit,Selenium Webdriver,我正在使用PHPUnit&Selenium2服务器。我正在使用PageObject模式。对于页面对象,我获得webdriver的一个实例并执行必要的功能 为了保持单个浏览器的运行,我实现了一个粗糙的解决方案,我在网络中找到了该解决方案,在静态类中初始化驱动程序: class SessionHelper { public static $first; } SessionHelper::$first = 0; 然后在我的测试用例类setup()方法中 通过这种方式,我可以在单个浏览器中执行

我正在使用PHPUnit&Selenium2服务器。我正在使用PageObject模式。对于页面对象,我获得webdriver的一个实例并执行必要的功能

为了保持单个浏览器的运行,我实现了一个粗糙的解决方案,我在网络中找到了该解决方案,在静态类中初始化驱动程序:

class SessionHelper {
    public static $first;
}
SessionHelper::$first = 0;
然后在我的测试用例类setup()方法中

通过这种方式,我可以在单个浏览器中执行所有测试。但是,如果一个测试用例失败;比如说,通过尝试查找不存在的元素,所有其他测试用例都会失败,并显示一条消息“UndefinedIndex:browserUrl”。如果我将其更改为在页面中查找已知元素,则效果良好。比如说,

test_method_1:如果在此测试失败后未找到任何元素,则返回“Undefined index:browserUrl”

若测试方法1运行正常,其余测试将一直执行,直到另一个测试用例失败


那么,我犯这个错误的原因是什么?当一个测试用例失败时,我的会话会被销毁吗?

当一个测试用例失败时,您的会话会被销毁:

如果测试不成功(失败),将重置会话 或不完整);用户有责任避免用户之间的交互 通过重置Cookie或从下的应用程序注销进行测试 测试(使用tearDown()方法)

从(底部)

方法
onNotSuccessfulTest
标记将会话设置为空的会话。在下一次测试中运行PHPUnit调用,但参数为null。这就是在中获取错误“未定义索引”的原因

您可以编写
onNotSuccessfulTest
方法:

public function onNotSuccessfulTest(Exception $e){
    throw $e;
}

有了它,会话不会被破坏。

在.xml文件中添加以下行,这样即使一个测试用例失败,它也会运行下一个测试

<phpunit bootstrap="bootstrap.php"
     colors="true"
     convertErrorsToExceptions="true"
     convertNoticesToExceptions="true"
     convertWarningsToExceptions="true"
     stopOnFailure="false">


如果您使用
PHPUnit\u Extensions\u Selenium2TestCase::shareSession(true)在你的phpunit引导程序中?是的,我做了。有测试代码。testGoogle2()-未成功。输出为:.F。有1次失败:1)S2p_GoogleTest:testGoogle2未能断言true为false。谢谢,刚刚测试了它,它工作了。
<phpunit bootstrap="bootstrap.php"
     colors="true"
     convertErrorsToExceptions="true"
     convertNoticesToExceptions="true"
     convertWarningsToExceptions="true"
     stopOnFailure="false">