2014-01-17 5 views
0

Я бегу пример Google спецификации, то есть:Не удается запустить тесты ГЭБ с помощью 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> 

и он не работает с сообщением, если я запускаю его с CLI или 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) 

Я проверил и Обще-коллекции банка присутствует и содержит класс «недостающий». Я вообще не получаю эту ошибку с использованием ChromeDriver, FirefoxDriver и InternetExplorerDriver.

К сожалению, по экологическим причинам я должен использовать HtmlUnitDriver, поэтому я действительно почесываю голову об этом.

Буду благодарен за любые предложения.

EDIT 1: Удалось выполнить часть этого теста успешно на моем Mac, оставшиеся времена. Но я не вижу тех же ошибок, что и выше (которые наблюдались в Windows).

+0

Вы подтвердили, что получаете правильную версию библиотеки сбора коллекций, которая имеет класс ListOrderedSet? –

+0

Да, кувшин, привезенный maven из-за разрешения зависимости, действительно содержит ListOrderedSet. Вот почему я так смущен. – profpfeff

ответ

0

Решено решить эту проблему, восстановив maven_repo, т. Е. Переместив старый в сторону, поэтому maven вынуждено перестроить его при следующем запуске тестов. Исключение больше не отображается.