使用Cucumber/Webdriver的验收测试从未完成

使用Cucumber/Webdriver的验收测试从未完成,cucumber,webdriver,gherkin,cucumber-jvm,Cucumber,Webdriver,Gherkin,Cucumber Jvm,我们使用Gherkin、Cucumber jvm和Webdriver对标准Java/Spring webapp运行验收测试。问题是,当使用Maven作业运行测试时,测试完全成功,但作业没有完成。只有关闭Firefox窗口,作业才能完成 我们有一个解决办法,在每个功能完成后显式关闭浏览器,但由于时间滞后,这将很快变得不可持续 技术堆栈如下所示: 黄瓜jvm1.0.4 硒2.12.0 火狐8.0 该应用程序在Windows 7计算机上的JBoss EAP 5.1中运行 当我们使用JRuby版本的Cu

我们使用Gherkin、Cucumber jvm和Webdriver对标准Java/Spring webapp运行验收测试。问题是,当使用Maven作业运行测试时,测试完全成功,但作业没有完成。只有关闭Firefox窗口,作业才能完成

我们有一个解决办法,在每个功能完成后显式关闭浏览器,但由于时间滞后,这将很快变得不可持续

技术堆栈如下所示:

黄瓜jvm1.0.4

硒2.12.0

火狐8.0

该应用程序在Windows 7计算机上的JBoss EAP 5.1中运行

当我们使用JRuby版本的Cucumber时,上述selenium/firefox组合没有出现这种行为,尽管当我们使用更高版本的selenium/firefox组合时出现了这种行为

以前有人见过这种行为吗?有人有什么建议或解决办法吗


提前感谢

您是否关闭了WebDriver

@cucumber.annotation.After
public void afterScenarioRun() {
    driver.close();
}

我在春天的环境中使用黄瓜和硒(黄瓜春天)。当WebDriver由Spring管理时,您可以将
destroy=“close”
添加到bean定义中:

<bean id="webDriver" class="org.openqa.selenium.ie.InternetExplorerDriver" destroy-method="close"/>


这会在所有测试完成后关闭浏览器。

是的,我们会这样做,但我正试图避免这种情况-关闭并重新打开浏览器窗口的开销会影响套件的运行时间,而且只会变得更糟。我希望有另一种解决方案,比如@EndSuite选项。看看挂钩:我关于挂钩的建议不起作用,因为对于cucumber jre来说,挂钩与之前和之后基本相同:cucumber.runtime.java.JavaBackend#addhook您可以实现cucumber.runtime.Backend#buildWorld和cucumber.runtime.Backend#disposeWorld to创建WebDriver实例并关闭它。并将后端类的实现放到cucumbers的类路径中。请参阅cucumber.runtime.runtime#loadBackends的源代码:subclass Backend并将您的子类放入cucumber.runtime.YouBackendImplementation。希望这能对你有所帮助。谢谢你的回复。从界面后端看,它说disposeWorld是在场景结束时调用的,而不是在完成测试运行时调用的。为什么你说的“由于时间延迟而很快变得不可持续?”?我们的测试套件(2000多个步骤)使用一个Firefox浏览器实例,运行时间长达40分钟。增加了关闭/重新打开每个功能文件(带有标记)或场景的浏览器的开销,这会增加更多的时间,在快速变化的代码库中使其达到不可持续的水平。并行运行它们。非常有趣-我非常感谢您在这方面的帮助,谢谢。您知道这是否仅在使用Surefire和JUnit时有效吗?目前我们仍坚持使用CLI方法,因为我们需要允许用户在命令行上指定要运行哪些标记。“要运行哪些标记”?黄瓜和硒都没有标签的概念。谁在“用户”角色下工作?