2017-02-27 98 views
3

假設我們有一些使用REST API的Web服務,並且爲了說明,有一些與數據庫有關的工作。在我看來,測試這個應用程序的最基本的方法是集成測試,它從REST API的頂部對它進行測試,以驗證它是否能正確工作。但是使用一些嘲諷技術進行單元測試呢?在專業開發中(當然是有限的人力資源)真的有必要用單元測試覆蓋代碼,即使它已經被集成測試覆蓋了嗎?我是否應該通過單元測試覆蓋代碼,即使它已經被集成測試涵蓋了?

謝謝

+1

我會留下這裏作爲評論:D可能值得一看https://www.youtube.com/watch?v=VDfX44fZoMc – JSelser

+1

這是非常好的解釋,謝謝你!但我有這樣的感覺,即使是最好的解決方案,在通常的企業實踐中,幾乎不可能寫出如此高度結構化的單元測試。所以我在通常的公司Java項目上看到的是,在一致性方面存在彼此獨立的非常孤立的單元測試,這些測試功能非常值得懷疑。 – Jurass

+0

http://stackoverflow.com/questions/42469686/does-unit-tests-still-matter-if-functional-tests-is-satisfied/42476254#42476254只是在這裏回答同樣的問題,將重新發布答案,因爲不能投票關閉作爲重複,因爲它沒有任何upvotes /接受 – dm03514

回答

1

好問題。當然,答案是基於意見的,但希望它們基於實際的實際經驗。

就我而言,多年來我已經編寫了數千次JUnit/TestNG測試,並且我恰好爲Java開發了一個高級測試庫(模擬+代碼覆蓋+集成測試)。

所以,國際海事組織,當你已經有一個好的集成測試套件時,編寫單元測試是不需要的,也沒有什麼效率。

集成測試確實需要更長的時間才能運行,但它們應該足夠快,以免開發人員不願意運行它們。這一點很重要:如果開發者在開發新代碼或修改時仍然可以運行一個測試,一個測試類等,那麼它很好。因此,避免集成測試方法(例如Selenium)使測試執行過於緩慢/痛苦。

另一個針對集成測試的批評是,它們使得找出測試失敗的根本原因更加困難。雖然這在實踐中並不是一個足夠大的問題。

Martin Fowler在他的Unit Test文章中提出了相同的兩點。