Grails GEB测试在后续运行中失败

时间:2014-01-15 11:54:28

标签: grails selenium functional-testing geb

我的应用程序使用以下版本:

  • Geb:0.9.2
  • 硒:2.26.0
  • Grails:2.1
  • Spock:0.7

我在Linux机器上运行以下内容:

  • Firefox:14
  • Centos:5.3

我有一个grails应用程序,我在功能测试阶段使用Geb。

如果我从一个干净的环境开始(.grails已被擦除)并且我运行我的测试他们都经历好了,geb运行firefox,测试并给我报告。

然而,随后运行的功能测试所有测试都将失败:

geb.giver.DriverCreationException

显然是由以下原因造成的:

java.lang.NoSuchMethodException

现在,如果我丢弃我的.grails并再次运行,下次通过罚款。只是希望能够一致地运行测试。

非常感谢任何帮助!

干杯

更新

下面是堆栈跟踪的要点(手工复制,以便为任何拼写错误道歉):

geb.driver.DriverCreationException: failed to create driver from callback 'GebConfig$_run_closure@6f61a3c4'
    at geb.driver.CallbackDriverFactory.getDriver(CallbackDriverFactory.groovy:35)
    at geb.driver.CalbackDriverFactory.getDriver_closure3(CachingDriverFActory.groovy:80)
    ...

Caused by: java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init>(Ljava/lang/string;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V
    at org.openqa.selenium.remote.internal.HttpClientFactory.getClientConnectionManager(HttpClientFactory.java:59)
    at org.openqa.selenium.remote.internal.HttpClientFactory.<init>(HttpClientFactory.java:48)
    at org.openqa.selenium.remote.HttpCommandExecuter.<init>(HttpCommandExecuter.java:118)
    ...

1 个答案:

答案 0 :(得分:2)

过去我有这个问题。正好与堆栈跟踪中的HttpDriver类一起发生,并在第二次运行后发生干净。这是由于你的一些Grails插件引入了一个冲突版本的HttpClient。

我发现它通常是一个可以传递插入发布插件的插件,但不会将其排除在导出之外。找到罪魁祸首的方法是在.grails目录中浏览该应用程序的所有已安装插件,并查看其依赖项以查找正在提取插件的插件,然后将其删除或更新为更新版本随着越来越多的插件作者从发布中排除发布插件,我也相信最新版本的发布插件不再依赖于HttpBuilder。