2008-09-17 113 views
14

.NET(或任何其他語言或平臺)中命名測試程序集的最佳約定是什麼?.NET測試命名約定

什麼我主要分裂之間是這些選項(請提供他人!):

  • Company.Website - 項目
  • Company.Website.Tests

  • Company.Website
  • Company.WebsiteTests

與第一解決方案的問題是,它看起來像.Tests是子命名空間的網站,而他們真的是多在我的腦海中平行。當新的子命名空間發揮作用時會發生什麼,例如Company.Website.Controls,例如,我應該在那裏放置該名稱空間的測試?

也許它甚至應該是:Tests.Company.WebsiteTests.Company.Website.Controls,等等。

+2

這是爲什麼關閉?所有'基於意見'的答案仍然是一個答案,用戶可以查看選項列表並選擇他們認爲最適合他們的選項。 – 2013-11-04 18:40:59

回答

18

我將與

* Company.Website - the project 
* Company.Website.Tests 

去簡短的理由和答案很簡單,測試和項目的代碼有聯繫,因此應共享命名空間。

如果您想要在解決方案中分割代碼並進行測試,您可以使用該選項。例如您可以設置與

-Code文件夾

  • Company.Website

-Tests文件夾

  • Company.Website.Tests
13

我個人與

Company.Tests.Website

你有一個共同的測試的命名空間和項目裏面這樣走了,以下相同結構的實際項目。

7

我實際上有一個替代的平行根。

Tests.Company.Website

它可以很好地用於非模糊的東西,當你有新的子命名空間。

+4

爲什麼downvote?這位評論家能否詳細說明這一點?這與任何其他建議的解決方案一樣好 - 並且有一個好點。 – 2008-11-11 06:10:47

+0

雖然這會引起引用命名空間的問題。這有點讓人頭疼,至於我爲什麼要搜索這樣做的建議...(我沒有投票) – ppumkin 2017-10-31 10:17:09

0

我通常名稱測試項目項目,測試在解決方案資源管理簡便起見,我用Company.Namespace.Tests的命名空間。

5

我構建了測試命名空間這樣的大風扇:

Company.Tests.Website.xxx

Company.Tests.Website.Controls

你一樣,我將這些測試看作主代碼的並行名稱空間結構,併爲您提供了這一點。它也有,因爲命名空間仍與貴公司的名稱開始,你不應該有第三方庫

0

任何命名衝突,我更喜歡去的優勢:

Company.Website.Tests

我不在乎像Company.Website.Controls這樣的任何子命名空間,所有的測試都進入相同的命名空間:Company.Website.Tests。您不希望測試命名空間與其他代碼保持平行,因爲它只會使重構命名空間花費兩倍的時間。

0

我喜歡Company.Website.Spec,通常有每個解決方案

0

一個測試項目我們遵循一個嵌入的方法:

Company.Namespace.Test 
Company.Namespace.Data.Test 

這樣的測試是接近正在測試的代碼,而不必在項目之間來回切換或搜索引用,以確保有一個覆蓋特定方法的測試。我們也不必維護兩個獨立但相同的層次結構。

我們也可以在我們增強和發展的過程中測試代碼的不同部分。

起初似乎有點不可思議,但從長遠來看,它對我們來說工作得非常好。

1

我一個解決方案過於偏愛裝配的實際名稱前綴「測試」因此,當我大量選擇它們以拉入NUNit或您使用的任何測試工具時,可以很容易地看到所有我的單元測試程序集按字母順序列出。

所以,如果網站是我的解決方案(和組件)的名稱,我建議 -

Tests.Website.dll沿實際代碼組件Website.Dll

0

一起去MVC開始在.net Web開發世界中成爲現實,我會開始考慮這些方面。請記住,M,V和C是不同的組件,因此:

  • Company.Namespace。網站
  • Company.Namespace.Website.Core
  • Company.Namspance.Website.Core.Tests
  • Company.Namespace.Website.Model
  • Company.Namespace.Website.Model.Tests

網站是您的輕量級視圖。 核心包含控制器,幫助器,視圖界面等.Core.Tests是您對所述Core的測試。型號適用於您的數據模型。這裏最酷的是你的模型測試可以自動化你的數據庫特定的測試。

這對某些人來說可能有些過頭,但我發現它可以讓我很容易區分問題。