2014-01-17 29 views
0

下我運行的是谷歌例如規範,即:不能使用HtmlUnitDriver運行蓋布測試Maven的

class GoogleHomePageSpec extends GebReportingSpec { 

def "first result for wikipedia search should be wikipedia"() { 
    given: 
    to GoogleHomePage 

    expect: 
    at GoogleHomePage 

    when: 
    search.field.value("wikipedia") 

    then: 
    waitFor { at GoogleResultsPage } 

    and: 
    firstResultLink.text().startsWith "Wikipedia" 

    when: 
    firstResultLink.click() 

    then: 
    waitFor { at WikipediaPage } 
} 
} 

具有以下GebSpec

reportsDir = "target/geb-reports" 

/* webdriver.*.driver system properties are set in the POM */ 
driver = { 
    new HtmlUnitDriver(); 
} 

,並根據相關pom.xml摘錄:

<dependency> 
     <groupId>org.spockframework</groupId> 
     <artifactId>spock-core</artifactId> 
     <version>0.7-groovy-2.0</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>2.39.0</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.gebish</groupId> 
     <artifactId>geb-spock</artifactId> 
     <version>0.9.2</version> 
     <scope>test</scope> 
    </dependency> 

並且如果我從運行它,它會失敗或IDE

First result for wikipedia search should be wikipedia(scratch.GoogleHomePageSpec) Time elapsed: 0.96 sec <<< ERROR! 
geb.driver.DriverCreationException: failed to create driver from callback '[email protected]' 
    at geb.driver.CallbackDriverFactory.getDriver(CallbackDriverFactory.groovy:35) 
    at  geb.driver.CachingDriverFactory.getDriver_closure3(CachingDriverFactory.groovy:80) 
    at geb.driver.CachingDriverFactory.getDriver_closure3(CachingDriverFactory.groovy) 
    at geb.driver.CachingDriverFactory$SimpleCache.get(CachingDriverFactory.groovy:30) 
    at geb.driver.CachingDriverFactory.getDriver(CachingDriverFactory.groovy:79) 
    at geb.Configuration.createDriver(Configuration.groovy:354) 
    at geb.Configuration.getDriver(Configuration.groovy:343) 
    at geb.Browser.getDriver(Browser.groovy:105) 
    at geb.Browser.clearCookies(Browser.groovy:483) 
    at geb.Browser.clearCookiesQuietly(Browser.groovy:491) 
    at geb.spock.GebSpec.resetBrowser(GebSpec.groovy:45) 
    at geb.spock.GebSpec.cleanup(GebSpec.groovy:67) 
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/collections/set/ListOrderedSet 
    at com.gargoylesoftware.htmlunit.CookieManager.<init>(CookieManager.java:59) 
    at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:131) 
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.newWebClient(HtmlUnitDriver.java:289) 
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.createWebClient(HtmlUnitDriver.java:263) 
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.<init>(HtmlUnitDriver.java:144) 
    at GebConfig.run_closure1(GebConfig.groovy:10) 
    at GebConfig.run_closure1(GebConfig.groovy) 
    at geb.driver.CallbackDriverFactory.getDriver(CallbackDriverFactory.groovy:29) 
    at geb.driver.CachingDriverFactory.getDriver_closure3(CachingDriverFactory.groovy:80) 
    at geb.driver.CachingDriverFactory.getDriver_closure3(CachingDriverFactory.groovy) 
    at geb.driver.CachingDriverFactory$SimpleCache.get(CachingDriverFactory.groovy:30) 
    at geb.driver.CachingDriverFactory.getDriver(CachingDriverFactory.groovy:79) 
    at geb.Configuration.createDriver(Configuration.groovy:354) 
    at geb.Configuration.getDriver(Configuration.groovy:343) 
    at geb.Browser.getDriver(Browser.groovy:105) 
    at geb.Browser.clearCookies(Browser.groovy:483) 
    at geb.Browser.clearCookiesQuietly(Browser.groovy:491) 
    at geb.spock.GebSpec.resetBrowser(GebSpec.groovy:45) 
    at geb.spock.GebSpec.cleanup(GebSpec.groovy:67) 

我檢查和公地收集罐中存在,並且包含了「失蹤」類。 我根本沒有得到這個錯誤,使用ChromeDriverFirefoxDriverInternetExplorerDriver

不幸的是,由於環境的原因,我不得不使用HtmlUnitDriver,所以我真的在撓撓我的腦袋。

將不勝感激的任何建議。

編輯1: 已成功地在我的Mac上運行此測試的一部分,其餘超時。 但是我沒有看到與上面相同的錯誤(在Windows上觀察到)。

+0

您是否驗證了您正在獲取commons-collection庫的正確版本,該庫有一個ListOrderedSet類? –

+0

是的,由於依賴解決由maven引入的jar確實包含ListOrderedSet。這就是爲什麼我很困惑。 – profpfeff

回答

0

解決了這個問題,方法是重建maven_repo,即將舊版本移出,這樣Maven就會在下一次測試中重建它。 異常不再出現。