2013-01-18 33 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的开始。 –

相关问题