2014-06-12 87 views
0

我對grails應用程序有一些geb功能測試。運行geb + spock無頭測試

測試在從終端或IDE執行時按預期工作。 儘管測試需要由哈德森執行,所以它們使用Xvfb在無頭模式下運行。

問題是測試保持失敗或行爲意外,返回像RequiredPageContentNotPresent和陳舊元素引用異常的地方沒有意義的錯誤。

例如: (在LicencePage以上驗證,並且頁未改變)

when: 
    addDocument(Data.Test_Doc_name,Data.Test_Doc_file) 

有時會拋出

Failure: Add Actual Licence (HomePageSpec) 
| geb.error.RequiredPageContentNotPresent: The required page content 'addDocument - SimplePageContent (owner: LicencePage, args: [Functional Test Doc, /var/lib/hudson/jobs/KB-Functional_Tests/workspace/app/../manual_test_data/so_v3/os_test_1], value: null)' is not present 
    at geb.content.TemplateDerivedPageContent.require(TemplateDerivedPageContent.groovy:61) 
    at geb.content.PageContentTemplate.create_closure1(PageContentTemplate.groovy:63) 
    at geb.content.PageContentTemplate.create(PageContentTemplate.groovy:82) 
    at geb.content.PageContentTemplate.get(PageContentTemplate.groovy:54) 
    at geb.content.NavigableSupport.getContent(NavigableSupport.groovy:45) 
    at geb.content.NavigableSupport.methodMissing(NavigableSupport.groovy:121) 
    at geb.Browser.methodMissing(Browser.groovy:194) 
    at geb.spock.GebSpec.methodMissing(GebSpec.groovy:51) 
    at HomePageSpec.Add Actual Licence (HomePageSpec.groovy:228) 

方法addDocument()是一個 '抽象' 頁上所定義, LicencePage正在擴展。在這樣的大多數情況下,如果我直接將方法代碼複製到我的規範中,它就會起作用,儘管它破壞了我在測試頁上的所有結構。

任何人都有使用Xvfb運行geb測試的經驗嗎?你有沒有遇到這些問題?在本地執行,在測試表現不確定性(哈德森)

所有的測試都通過了,這不是一個數據問題,因爲DB總是清零

而且,而不進行任何更改所以上述例外並不總是被拋出。根本沒有任何改變,測試有時會成功,有時會失敗。

回答

1

您給出的描述似乎是flackey測試套件的症狀。我們前段時間也遇到了這個問題。一個好的起點是這個presentation(大約35分鐘)和documentation關於geb中的等待的東西。

如果您認爲它可能與xvfb有關(我沒有經驗),您可以嘗試使用phantomjs作爲測試運行程序並檢查它是否正常工作。

相關問題