鮑勃大爺:單元測試中單元是多小?

banq發表於2020-01-05

“單元測試”中的“單元”一詞通常僅表示“小”。該詞沒有一致的定義。一些TDDer稱它們為微測試以強調其微小性。我更喜歡它是“程式設計師測試”,因為使用TDD,它們是由程式設計師為程式設計師編寫的。

眾說紛紜:
banq注:鮑勃大爺將單元解釋指向了人,而不是業務領域本身,這是一種思路,但也可能是搗糨糊:

Mathias Verraes:軟體設計中,越小越好,粒度越細越好往往是一種壞建議

在OOP中,單元測試不是通用的定義,它是透過單個函式/方法測試單個路徑。我知道在函數語言程式設計中可能有所不同,但是我知道的大多數OOP開發團隊都使用上面的定義。

同意。“單元”與“整合”之間的區分是人為的,不會造成混亂。最終,它不如面向程式碼的測試和麵向使用者的測試有用。

我不同意。“單元”一詞代表無法進一步分解的結構。TDD的整體思想是協助徹底分解系統。

您可以將單元定義為小,中或大。在TDD中,單元應該很小,在OOP中,您可以在團隊中達成一致。我認為小型單元有助於跟上維護和重構的步伐。節省重寫測試。

它應該意味著事務。

恕我直言,如果它跨越流程邊界,則不是單元測試。一旦這樣做,它就在執行至少兩個軟體單元,因此不能稱為單元測試。

我一直以為它的意思是“僅測試單個程式碼單元”,因為……沒有依賴關係(否則將是整合測試)或儘可能少的依賴(Rails中的ActiveRecord物件,它們是隨身攜帶的,但是這並不意味著我們必須在這裡進行資料庫測試)。

單元是自己有目的的最小的獨立邏輯,無論是函式還是簡單的類。

“程式設計師測試”雖然不那麼引人注目,但在傳達重要部分(測試物件是誰)方面做得更好。他們回答了“您構建程式碼正確了嗎?”這個問題。測試術語確實非常混亂,但最終,測試的受眾才是關鍵

 

相關文章