2010-10-25 31 views
2

今天我終於開始爲我的新ASP.net MVC項目認真編寫一些單元測試。但是,某些單元測試對於每個控制器中的每個操作都保持返回:爲asp.net mvc自動執行單元測試

  • 執行測試,看返回的ActionResult是否不爲null。
  • 如果ModelState無效,則執行測試操作是否返回有效的ActionResult。
  • 如果ActionResult的類型與特定類型匹配(例如,ViewResult或RedirectResult),則執行測試。

這三個測試對每個動作都包含或多或少相同的代碼。由於我喜歡避免重複的代碼,因此我想爲每個動作自動執行這些「默認」測試。我做了一些關於它的快速Google,但找不到任何東西。

所以:

  • 是一種自動默認測試一個明智的事是什麼?
  • 如果是,可用的腳本或已經做過類似事情的人員?
  • 如果以前沒有人做過什麼,有什麼建議如何解決這個問題?

感謝您的回覆!

回答

2

我不認爲對不同的控制器進行類似的測試是'重複'的代碼。測試邏輯應該重構,以便可以重用。重新使用測試代碼來測試不同的控制器,因此不是重複。

你有沒有內MvcContrib看了TestHelpers。我認爲很多常見的控制器類型測試已經實施。還有其他方面使測試更容易一些。這就是說,它可以用來更容易地設置你的測試。看看這個答案Unit Testing Overkill

+0

好的指針在正確的方向。顯然不是我的想法,但MvcContrib和其他關於不會得到太複雜測試代碼的答案一起,會給我一個想法,即如何編寫其餘的單元測試。謝謝! – 2010-10-26 09:04:48

+0

也許最簡單的解決方案是在Visual Studio中編寫一些片段以快速編寫默認測試。 – 2010-10-26 10:54:25

1

第一個大的戰術問題是「你使用的是什麼單元測試棧?」有些[mstest]不支持測試中的繼承,所以做這種事情是棘手的。

至於實際去做,我通常發現,這可能是有意義的,但有太多的共享代碼,單元測試可以是一件壞事 - 會發生什麼,當你的單元測試代碼變得如此複雜,你需要單位測試代碼的測試?

+0

好評,謝謝!沒有想過通過太複雜的單元測試代碼。在這一刻,我確實使用mstest。 – 2010-10-26 09:02:24

+0

那麼,mstest是你的第一個問題:) – 2010-10-26 16:31:01