2009-01-02 178 views
9

我只是想知道是否有其他人只看到集成測試只是一個特殊的單元測試。不過,我從其他程序員那裏聽說,分離單元測試和集成測試是一個好主意。我想知道是否有人可以解釋爲什麼這是一個好主意。將整合和單元測試視爲完全不同的是什麼樣的優勢?例如,我已經看到了用於集成測試和單元測試的單獨文件夾和包。我認爲一個包含單元測試和集成測試的測試包就足夠了,因爲它們基本上都是相同的概念。您是否將單元測試與集成測試分開了?

回答

7

由於以下原因,我將它們視爲不同。

  • 單元測試可以在開發人員環境中的單個類/模塊上執行。
  • 集成測試應在類似於實際生產設置的環境中執行。

單元測試有意保持「輕量級」,以便開發人員能夠以最低的成本按需要運行它們。

3

是的。通常,單元測試的範圍在類級別,所以它們與模擬對象一起存在於環境中。另一方面,集成測試通過保持對組裝類型的引用來完成所有的技巧。

我只是沒有看到如何組織單元和集成到單個項目中。

7

速度是主要原因。你希望你的單元測試儘可能快,以便你可以儘可能經常運行它們。您仍然應該運行集成測試,但在簽入之前運行它們應該足夠IMO。單元測試套件應該更頻繁地運行 - 理想情況下是每次重構。

我在一個環境中工作,在這個環境中,我們有大約15k的junit測試,單元測試和集成測試完全混合。全套房需要大約半小時才能運行。開發人員避免運行它,並且比他們應該的時間晚。有時他們在運行只有一部分測試後檢查,並且包含破壞連續構建的錯誤。

開始早期分離您的測試。一旦你有一個大套房很難。

+0

同意。混合單元和集成測試是一個真正的痛苦。 – 2009-11-24 08:51:10

3

如果限制「單元測試」,以在類級別範圍的概念,那麼,保持然而,他們分開

如果你定義的最小相關可測試單元爲功能然後一些你的'單元'測試在技術上將是'集成'測試

對術語的各種定義/解釋的重新調整在很大程度上是不相關的,但是,測試套件的劃分應該是被測試組件的範圍的函數以及執行測試所需的時間。例如,如果所有測試(單元,集成,迴歸或其他)都適用於單個程序集並在幾秒鐘內運行,那麼將它們放在一起。但是如果某些測試需要在子網上使用六臺乾淨的安裝機器,而其他測試則不需要,將第一組測試與後一組測試分開是有意義的。

摘要:「單元」和「集成」測試的區別在於無關緊要的;基於操作範圍的包測試套件

相關問題