2013-01-18 31 views
3

對不起,所有這些代碼,但我沒有線索是什麼使我的問題,所以它在這裏。Geb Firefox驅動程序:爲什麼我的測試運行兩次?

我配置了geb插件以使用JUnit運行功能測試。所以,我在我的buildConfig.groovy

def seleniumVersion = "2.29.0" 
def gebVersion = "0.7.0" 

dependencies { 
    // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg. 

    // runtime 'mysql:mysql-connector-java:5.1.5' 

    provided('com.oracle:oracle:11.1.0.7.0') 
    provided('com.oracle:i18n:10.2.0.5') 


    test ("org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion") { 
     export = false 
    } 
    test("org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion"){ 
     excludes "commons-io" 
     export = false 
    } 
    test ("org.seleniumhq.selenium:selenium-ie-driver:$seleniumVersion") { 
     export = false 
    } 

    test ("org.seleniumhq.selenium:selenium-support:$seleniumVersion") { 
     export = false 
    } 
    test ("org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion") { 
     export = false 
    } 

    test ("org.codehaus.geb:geb-junit4:$gebVersion") { 
     export = false 
    } 

} 

plugins { 
    build(":tomcat:$grailsVersion") { 
    export = false 
    excludes 'svn' 
    } 
    compile (":hibernate:$grailsVersion") { 
    export = false 
    excludes 'svn' 
    } 

    build (":release:2.0.0") { 
    excludes 'commons-io','http-builder' 
    export = false 
    } 

    compile(":spring-security-core:1.2.7.3") { excludes 'svn' } 
    compile(":spring-security-ldap:1.0.6") 

    compile (":remote-control:1.3") { 
    export = false 
    } 

    test(":geb:$gebVersion") { 
    export = false 
    } 
} 

而且我有一個GebConfig.groovy在我的conf文件夾:

driver = { 
//def driver = new HtmlUnitDriver() 
//driver.javascriptEnabled = true 
//driver 
def driver = new FirefoxDriver() 
driver 
} 

environments { 
    // run as 「grails -Dgeb.env=chrome test-app」 
    // See: http://code.google.com/p/selenium/wiki/ChromeDriver 
    chrome { 
    driver = { new ChromeDriver() } 
    } 

    // run as 「grails -Dgeb.env=firefox test-app」 
    // See: http://code.google.com/p/selenium/wiki/FirefoxDriver 
    firefox { 
    driver = { new FirefoxDriver() } 
    } 
} 

我的登錄功能測試:

class LoginTests extends GebReportingTest { 


    @Test 
    void login() { 
     to LoginPage 
     at LoginPage 

     username = "SERGIO" 
     password = "SERGIO" 

     loginButton.click() 

     assert at(IndexPage) 

     link.click() 

    } 

} 

這是我的兩頁:

class LoginPage extends Page { 

    static url = "login/auth" 

    static at = { 
     title ==~ /Efetuar Login/ 
    } 

    static content = { 
     loginForm { $("form", id: "loginForm") } 
     username { $("input", type:"text", id:"username") } 
     password { $("input", type:"password", id:"password") } 
     loginButton{ $("input", type:"submit", id:"submit") } 
    } 

} 

class IndexPage extends Page { 

    static at = { 
     title ==~ /Security Service Index View/ 
    } 

    static content = { 
     description { $('h1') } 
     link { $('a') } 
    } 

} 

出於某種原因,我的功能測試運行兩次,並沒有不管我如何開始的:

grails test-app :functional 

grails test-app -functional 
+0

這可能不是你的問題的原因,但你爲什麼需要對selenium-remote-driver的依賴?另外,你能說明你的測試運行兩次是什麼意思嗎?兩次FF?你正在使用哪個Grails版本?你還安裝了哪些其他插件? – erdi

+0

我編輯了安裝的插件列表。我只是複製了一個例子中的硒依賴關係,所以遠程來自於這個:) –

+0

通過運行兩次,我的意思是功能測試運行兩次(在控制檯「運行測試1」中出現兩次,FF也做了兩次他的工作 –

回答

3

它看起來像Geb插件不完全兼容Grails 2.3.x。由於某些原因,升級到Geb插件0.9.2後,測試會執行兩次。

我認爲這個問題與https://jira.grails.org/browse/GRAILS-10552有關,並且作爲https://jira.grails.org/browse/GRAILS-6352的一部分進行了更改。

在Grails的2.3.x版本+,該GrailsS​​pecTestType照顧雙方的JUnit和斯波克測試: https://github.com/grails/grails-core/blob/bce298f0/grails-test/src/main/groovy/org/codehaus/groovy/grails/test/spock/GrailsSpecTestType.groovy#L33

它看起來像創業板插件添加棄用JUnit4GrailsTestType來執行: https://github.com/geb/geb/blob/584738cb/integration/geb-grails/scripts/_Events.groovy#L60-L67

這就是爲什麼功能測試會執行兩次。

這是我如何解決Geb 0.9.2/0.9.3版本中的問題。

grails test-app functional:spock 

它看起來像Geb版本0.9.1沒有執行兩次測試。

的區別似乎由以下原因造成此承諾: https://github.com/geb/geb/commit/9c71e820

你也應該知道,你不應該安裝在Grails的2.3.x版本/ 2.4.x中的斯波克插件。

+0

已將此問題報告給Geb Jira:http://jira.codehaus.org/browse/GEB-314 –

+0

謝謝!我非常感謝你的時間。 –

0

嗨沒有太大的硒的webdriver在Ruby,但它似乎是要啓動Firefox的兩倍因爲這樣的測試在兩種情況下運行

+0

我不認爲是這樣,因爲我的測試依次運行兩次,並且我沒有控制FF的開始。 –

相關問題