2011-03-29 165 views
7

因此,我咬牙切齒,試圖開始使用asp.net MVC,單元測試和TDD。如何使用asp.net mvc和單元測試來組織代碼和測試

我對涉及的概念有一種模糊的理解,也就是說超出了「Hello World」級別,但仍然非常綠。我已準備好迎接這條路的橡膠,但是 我發現自己在最後的半個小時裏盯着VS中的「新建項目」對話框...... 您是怎樣準確地組織單元測試的?

我看到,使用標準的VS單元測試項目類型,它爲單元測試創​​建了一個單獨的項目。這是我應該如何繼續使用NUnit?或者應該將測試放在與正在測試的代碼相同的項目中?

沒有「單元測試入門」類型的教程我發現似乎解決了這個問題。

回答

8

測試應該維護在單獨的項目中,因爲您不想將測試代碼部署到生產環境。對於單項目解決方案,一個測試項目可能就足夠了。

從內部看,只要測試項目一致,就可以用任何方便的方式組織測試項目。一個ASP.NET MVC測試項目可能有一個ControllerTests文件夾,每個控制器有一個測試.cs文件,在一定程度上反映了MVC項目結構。這使得測試易於查找並與他們正在測試的代碼相關聯。

+0

我同意它可以更容易地遵循mvc控制器結構,對於任何不知道你可以從控制器類的上下文菜單中單擊「添加單元測試」的人,visual studio會爲你做很多工作。 – John 2012-05-11 08:06:38

2

你是怎麼組織你的單元測試的?

我組織我的單元測試以反映我的項目結構。所以,冷杉舉例來說,如果在我的ASP.NET MVC項目,我有

  • 控制器
  • 模型
  • 映射器
  • 校驗 ...

我在單位的同一文件夾測試項目。然後對於MVC項目中的每個文件,我都有相應的單元測試。這是一個sample project structure I wrote的例子。

+0

謝謝你的樣品! – seanicus 2011-03-30 02:16:00

1

我的格式通常一直像這樣:

MyMvcApp.Web (The Actual Web Application) 
    |- Controllers 
    |- ViewModels 
    |- Views 
    |- Framework (For specific override points in the MVC Framework) 
MyMvcApp (The class library that contains my domain specific logic) 
    |- SomeFacet (Folder to contain entities, objects, etc) 
    |- Repositories 
MyMvcApp.UnitTests (Test project) 
    |- SomeFacet (Contains tests for specified folder in class library) 
MyMvcApp.IntegrationTests (Test project) 
    |- SomeFacet (Contains tests for specified folder in class library) 
+0

感謝您的輸入! – seanicus 2011-03-29 18:55:55

0

它首先要明白,我們究竟需要測試和哪些設施可供目的更爲重要。它基本上是您需要關注的應用程序中的對象的行爲。你有很多測試框架可供選擇,比如NUnit等。隨着你一起進行測試項目的結構工作。