2014-10-31 31 views
0

我想在運行測試套件之前評估我的內容塊,但閉包的屬性名稱已在字節碼中。我爲最乾淨的解決方案(與手動解析源相比)鼓吹。在運行時在內容塊中訪問閉包屬性名稱

已經嘗試解決方案概述in this post(我仍然結束了一些RegEx /解析),但只能通過腳本執行引擎得到它的工作。它在IDE和GroovyConsole中失敗了。我不想在項目代碼中嵌入Groovy腳本,而是想用Geb的本地類。

建立在擴展Geb導航器here對Geb的PageContentSupport類可行的建議,其contentTemplates包含正是我需要的LinkedHashMap?如果是的話,有人會提供指導嗎?如果不是,有什麼建議?

+0

您能解釋一下爲什麼「在運行測試之前要評估我的內容塊」?你想通過這樣做來解決什麼樣的用例?我問的原因可能是你的問題比你想要做的更簡單的解決方案。 – erdi 2014-11-02 22:03:50

+0

而不是使用測試結果來修復已棄用/損壞的內容,在運行我們的套件之前修復它們會更簡單。把它看作導航對象的單元測試。如果有一些更簡單的辦法,讓我知道。謝謝,呃! – devwillie 2014-11-03 22:53:56

回答

0

目前無法獲得給定頁面/模塊的所有內容元素。請隨時在Geb's bug tracker中爲此創建一個問題,但請記住,Geb可以提供的所有內容都是內容元素名稱列表或從這些名稱到創建這些元素的閉包的映射。

擁有這些信息並不是解決您問題的通用方法,因爲內容元素可能需要參數,並且在某些情況下,只有在執行了其他某些操作後,您的內容元素才能在頁面上可用(例如,您必須點擊按鈕才能顯示使用ajax檢索其內容的頁面部分)。所以,我害怕簡單地檢查所有元素,並檢查它們是否不拋出任何錯誤不會削減它。

我仍然在努力看到什麼會在運行套件購買之前「評估」所有內容元素。您是否在驗證您的內容元素仍然能夠運行更快的反饋而不是運行整個套件?我非常肯定,您將無法完全自動檢測不再適用的內容定義。在我看來,這將是更多的努力,而不是值得的。

+0

是的,內容元素的名稱是我想要的,所以如果你可以提供最直接的路線,我會很好,否則我可以傳遞一個文字列表。雖然我知道這不是一種通用的「銀彈」解決方案,但b/c DOM狀態可能會如您所建議的那樣指示出錯誤的消極情況,但超過80%的內容不依賴於狀態。至於在套件執行之前引用有問題的內容實際上給我帶來了什麼,當超過50%的失敗是由於死亡內容元素引起的時,甚至可以理解80%的死亡內容定義比基於錯誤否定來隨機修復它們更可取。 – devwillie 2014-11-05 04:31:55

+0

夠公平的。請爲此在Jira中創建一個問題。 – erdi 2014-11-05 12:44:43