2016-11-12 36 views
1

這是一個採訪我的檢票口的問題。我們有5,6個硒測試的硒測試課。測試3正在執行中,並且發生網絡故障。現在一旦網絡恢復,如何配置框架,以便從第三次測試失敗的地方開始。並應執行已執行的測試1 & 2.假設框架是junit。網絡故障後繼續執行測試

回答

2

我不能同意javaguy的回答。我認爲這個問題完全有效。作爲一個概念的單元測試和作爲工具的JUnit之間有很大的區別。

javaguy的回答中描述的是單元測試。這些確實不能使用任何東西,只能將類加載到內存中並寫入。但是,當然使用Selenium Web驅動程序的測試不是單元測試。它有效地選擇了一個JUnit作爲實現這些測試的框架。當然,我們可以爭論JUnit是否是最好的工具,但它是一個不同的故事,如果選擇JUnit作爲這些測試的實現工具,這是一個不錯的選擇。

現在關於你的問題。有很多不同的方法來實現你想要的。

  1. 創建一個允許重新運行測試的JUnit規則。一般來說,如果您熟悉AOP術語,規則有點像攔截器或方面。他們攔截了測試,所以失敗後可以重新運行。 Here您可以找到解釋規則並提供一些鏈接的問題。

  2. 實現自定義運動員。只有當您沒有使用其他跑步者時,這種方法纔會起作用,因爲JUnit僅爲跑步者提供了一個插槽。 這個自定義運行器將再次攔截測試呼叫,並將在網絡故障/ ping網絡時重新運行並等待,並且只有當它將「返回」時纔會重新運行。然後您可以使用@RunWith註釋激活您的實際跑步者測試。

  3. 適用的解決方案。假設,在您的測試中,硒web驅動程序是唯一實際依賴網絡的東西,將硒驅動程序調用包裝到您的調用中。爲硒的所有呼叫提供try/catch,並在發現異常時重試。你甚至可以爲此使用方面或手動實現包裝。

  4. 有在詹金斯/你的構建工具的水平也有一些解決方案,但我認爲這些都是超出範圍實際上...

希望這有助於