1

我準備創建我的第一個單元測試,或者至少這是我怎麼想的吧。在閱讀本週末的單元測試後,我懷疑我實際上想做集成測試。我有第三方供應商提供的黑盒子組件(例如數字級API),我想創建測試以測試它在我的應用程序中的使用情況。我的目標是確定在集成到我的應用程序中時,該組件的新發布版本是否正常工作。我可以使用單元測試工具進行集成測試嗎?

使用該組件在我的應用程序的代碼深埋,並利用它的方法將是單元測試很困難沒有廣泛的重構,我不能在這個時候做。我打算最終。 考慮到這個事實,我正打算編寫自定義單元測試(即沒有從我的類方法或屬性一個派生)把這個第三方組件通過相同的操作,我的應用程序將需要它。我確實懷疑我以這種方式規避了單元測試的重大好處,但正如我之前所說,我現在無法停止並重構我的應用程序的這個特定部分。

我在想,如果我還可以寫單元測試(使用Visual Studio)中測試該組件或者是違背最佳做法?從我的閱讀中可以看出,Visual Studio中的單元測試工具非常適合這樣做 - 單元測試方法和組件的屬性。

我兜兜在我的頭上,我不能確定我要的是一個單元測試(第三方組件)或集成測試?我喜歡單元測試,因爲它是一個託管系統來執行測試,但我不知道它們是否適合我正在嘗試做的事情。

+0

你應該看科林Bowern的對談[建築更好的集成測試(http://channel9.msdn.com/Events/TechEd/NewZealand/TechEd-New-Zealand-2012/DEV303)[9頻道] (http://channel9.msdn.com/)。 – kagundajm

回答

0
  1. 你把測試圍繞第三方組件,來證明它做什麼,你認爲它(你的系統的其餘部分需要它做的事)的計劃是一個好主意。通過這種方式,當您升級組件時,您可以快速判斷其是否已更改,這意味着您的系統將需要更改。這將是該組件與系統其餘部分之間的Integration Contract Test

  2. 展望未來,您應該將第三方組件置於系統其他組件所依賴的接口之後。然後那些其他部分可以與第三方組件隔離進行測試。

我指的邁克爾羽毛Working Effectively with Legacy Code對方法去添加單元測試代碼沒有單元測試以及因素的信息。

0

測試第三方組件,你正在做它的方式肯定是不反對的最佳做法。因爲a)第三方組件被測試爲一個孤立的(子)系統,並且b)您的測試目標是驗證(子系統)測試,因此這樣的測試將被分類爲(子)系統測試。在API級別上的行爲而不是在測試較低級別的實現方面。

該測試肯定不會被歸類爲集成測試,因爲您根本不是將測試組件與代碼一起進行測試。也就是說,您將例如不會發現您的組件是否以違反第三方組件的期望的方式使用第三方組件。

這麼說,我想強調兩點:

  • 事實上,測試是不是一個單元測試並不能使不那麼值錢了。我遇到了一些情況,我告訴人們他們的測試不是單元測試,他們對我很生氣,因爲他們認爲我想告訴他們他們的測試沒有意義 - 這是一個不幸的誤解。
  • 測試所屬類別不是由您正在使用哪種測試框架等技術因素定義的。它是由您想要通過測試實現的目標來定義的,例如,您想要查找哪種類型的錯誤。
相關問題