2008-11-07 63 views
18

在編寫單元測試時,您是否將測試放入要測試的程序集或單獨的測試程序集中?我已經在一個單獨的程序集中編寫了一個測試類的應用程序,以便於部署,因爲我可以排除程序集。有沒有人在你想測試的程序集內寫入測試,如果有的話,是什麼理由呢?將單元測試寫入程序集或單獨的程序集中?

+0

有關此主題的更多有用信息:http://stackoverflow.com/questions/347156/do-you-put-unit-tests-in-same-project-or-another-project – Mats 2016-07-27 10:29:34

回答

10

我有一個接口項目,測試項目,域項目和數據項目的解決方案。當我發佈我剛剛發佈界面,其中沒有參考測試,所以它不會被編譯進去。

編輯:底線是真的,你不希望它成爲你的最終版本的一部分。您可以通過使用單獨的項目/程序集在VS中自動實現此目的。但是你可以在同一個程序集中,但是如果你使用nant或者msbuild,那麼就不要編譯那個代碼。儘管有點雜亂,保持整潔,使用一個單獨的程序集:)

5

在不同的程序集中。否則,您的程序集將引用測試框架(例如Nunit.Framework.dll),並且需要將其安裝在客戶機器上,即使您裝運的是庫,並且希望客戶看到單元測試作爲示例或關於如何使用您提供的對象的說明,在生產組件中包含幾乎沒有什麼優勢。

9

這是廣泛爭論的網絡。

我們使用單獨的程序集和InternalsVisibleTo屬性來幫助測試程序集查看所有測試程序集的內部結構。我們傾向於爲我們正在測試的每個組件製作一個測試組件。

+2

+1供參考到InternalsVisibleToAttribute。您應該添加鏈接:http://msdn.microsoft.com/en-us/library/0tke9fxk.aspx – 2010-04-28 15:55:31

9

我想說,當您想要在最終部署中包含任何測試代碼的唯一時間是測試代碼用於監視和控制應用程序時。

留在部署測試代碼:

  • 醃的代碼沒有真正的優勢可言 - 沿着標記是不會被就地在所有使用的所有額外的代碼。
  • 影響發佈 - 您是否發佈了新版本的完整應用程序。當你的改進僅在測試代碼中時,例如測試套件由於錯誤修復而延長。
  • 您無法輕鬆地在另一個項目上重複使用測試框架 - 如果您始終發佈由測試代碼堵塞的應用程序,則任何後續項目都必須重用相同的測試代碼。否則,您就完成了應用程序A在應用程序的這些方面使用測試平臺v1.2的情況。這在所有應用程序中都是常見的,例如表示層或業務邏輯框架等。而應用程序。 B正在使用測試框架v1.1。 C被使用V1.2.1等

解耦的otherhand允許您:

  • 輕鬆升級,並根據需要擴展的測試套件。
  • 輕鬆地在多個項目中重複使用測試套件。
  • 跨多個項目使用通用測試框架。

HTH

歡呼聲,

羅布

+0

好處在'影響發佈'和'測試重用'(都與版本控制相關)。 – Fil 2017-03-11 18:01:29

0

你可以讓他們在溶液中分離組件和ILMerge他們後來進行調試,並沒有ILMerge他們釋放。

相關問題