我的应用程序使用以下版本:
我正在一个带有以下内容的 linux 机器上运行:
我有一个 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)
...
最佳答案
我过去有这个确切的问题。与堆栈跟踪中的 HttpDriver 类完全相同,并且在清理后的第二次运行时发生。这是由于您的一些 Grails 插件引入了冲突的 HttpClient 版本。
我发现它通常是一个插件,它会传递地拉入发布插件,但不会将其排除在导出之外。找到罪魁祸首的方法是浏览 .grails 目录中为该应用程序安装的所有插件,并查看它们的依赖项以找到将发布插件拉入的插件,然后将其删除或更新为更新的插件随着越来越多的插件作者将发布插件排除在导出之外,我也相信最新版本的发布插件不再依赖于 HttpBuilder。
关于Grails GEB 测试在后续运行中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21136740/