2016-07-04 36 views
3

我有一個Spring引導+ REST應用程序。當我需要編寫單元測試時,我應該直接調用服務bean還是調用其餘控制器?如果我直接調用其餘控制器,我必須使用RestTemplate並將其餘api作爲客戶端調用,對吧?Spring引導REST應用程序測試方法

什麼是最好的和必需的做法?

如果我調用服務組件直接會導致更少的代碼覆蓋率,因爲控制器方法代碼將不包括在內。這可以接受嗎?

回答

2

嗯提到使用RestTemplate,這是一個複雜的問題,但我會盡我所能回答。這很大程度上取決於您/您的組織的風險承受能力以及他們想要投入測試的時間。我相信很多測試,但有太多這樣的事情。

單元測試測試代碼單元。太好了,但是什麼是單位?本文是一個相當不錯的討論:http://martinfowler.com/bliki/UnitTest.html,但一個單元基本上是應用程序中最小的可測試部分。

許多文獻(例如https://www.amazon.ca/Continuous-Delivery-Reliable-Deployment-Automation/dp/0321601912/)描述的測試,包括單元測試,這是非常低的水平和模型外部,如數據塊或文件系統或遠程系統,以及「API驗收測試」多個相(有時稱爲集成測試雖然這是一個模糊的術語,可能意味着其他的東西)。後一種類型啓動應用程序的測試實例,調用API並在響應中聲明。

簡短的回答如下:對於單元測試,關注單元(可能是服務或更細粒度),但是其他測試描述的測試,其中測試的行爲像一個客戶端並調用你的api,是值得的太。我的建議是:兩者都做,但不要同時調用單元測試。

+0

我想,如果你這樣做集成測試它覆蓋單元測試過。所以沒必要再寫單元測試用例也知道 – Harshana

+0

有爭議。單元測試通常是作爲TDD的一部分創建的,因此它們的用途稍有不同。他們推動設計,確保劃分和單一職責,並揭示編寫代碼的開發人員的意圖,以及開發人員如何使用他們構建的單元進行設想。 API等級驗收測試更多的是爲了確保您已經達到(而不是根據預先存在的)驗收標準。 – Taylor

1

最好的方法是測試威盛控制器。輸入WebServices並返回值。所以Controller在這方面扮演着非常重要的角色。可以有小的邏輯以及,你可能會錯過

您可以嘗試使用MockMvc方法進行測試控制器。

參考:Reference-1Reference-2

或者當你有問題Reference-3

0

它是基於你要測試什麼,你可以單獨測試,特別是如果你有開發團隊,使測試用例來測試你的企業「服務」,而另一個測試用例集成測試使用REST模板,在這種情況下,您可以更快,更輕鬆地確定錯誤。

0

這取決於你想要做什麼。

一種方法是進行單元測試工作的單元,如服務和MVC的控制器。這些測試只會測試在這些課程中發現的最終邏輯,並嘗試達到較高的分支覆蓋率(如果適用)。 除此之外,您可以編寫一個集成測試,使HTTP請求轉到真正的服務bean並只模擬最終的資源訪問。

爲了能夠集成測試,你可以使用Spring的支持,在這裏看到:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#spring-mvc-test-framework

相關問題