2011-11-10 53 views
0

A控制器包括兩個主要部分:設計花樣來測試RESTful服務

  • 映射的URL
  • 代碼裏面方法

當編寫一個測試案例有兩個部分進行測試。

  • 測試的URL和映射
  • 測試函數內部的代碼映射

後,採用經典的測試情況下,使用HttpServletResponse的模擬等,採用RESTtemplates(而不是使用curl)是相當大的東西使用。

問題是:使用哪一個,如何使用它們,如何合併它們,是否需要在邏輯上區分兩個測試部件?

什麼樣的模式用於測試RESTful服務。

回答

1

首先:

  • 良好的測試發現漏洞。 (測試必須現在找不到一個錯誤,他們也是很好的測試時,他們發現一個bug在furure一些地方,而任何人的任何更改。)
  • 壞測試中沒有發現錯誤。 ()如果一次測試永遠不會失敗,那麼整個項目開發或維護的時間都是無效的,那麼測試就沒用了。
  • 測試從來沒有證明沒有錯誤!

所以,當我寫的測試中,我試着寫他們儘可能地簡單,但也嘗試測試我相信,我可以去錯了每一件事情。

因此,例如,您的REST類型的服務:

當然也有可能是在邏輯許多錯誤,所以一個需要寫很多他們的測試。但是這個測試可以直接調用該方法,並使其相對容易編寫測試。通過一些HTTP調用來調用方法的更簡單。

但是當然在HTTP調用中可能會出現錯誤,因此必須進行測試。但是因爲我已經用我的正常單元測試測試了「代碼」。我只需要很少那麼難編寫測試。這個測試更關注可以通過錯誤的映射或錯誤的服務來完成的錯誤。

所以在最後:使用所有類型的,你可以寫測試(單元測試,嘲笑的東西,HttpUnit的測試,硒,...)。但首先想想你想測試的問題。並且選擇那種可以編寫和維護測試用例的測試。


順便說一句@see RestFuse - JUnit擴展

+0

感謝您的答案和投票了。當我編寫測試代碼時,是否應該將我在問題中解釋的兩種測試分開?我的意思是在不同的班級以不同的方式。我只是想要有一個好的設計模式。 – kamaci

+0

@kamaci:是的,你應該在單獨的類中做(也可以在不同的根源目錄中)。不同類的原因是,這兩種類型通常需要完全不同的測試設置和不同的測試運行器。不同根目錄的原因是,這允許你(如果你使用eclipse)分別運行每種類型。這可能很重要,因爲您通常只想在開發過程中運行快速測試(實際單元和模擬測試)。並且如果每件事都完成,只想運行所有測試(快速和慢速)一次。 – Ralph

+0

謝謝,這對測試REST架構代碼來說是一個很好的頭腦。 – kamaci