2009-11-22 49 views
0

我知道微軟和MvcContrib已經在啓用開發者的單元測試控制器方面做了很大的嘗試。但最近我一直想知道是否應該放棄單元測試控制器,並讓它們進行集成測試。我有兩個原因: 單元測試控制器是否有意義

  • 一個好的控制器不應該有任何邏輯或非常基本的最小邏輯。當然不是商業邏輯。它應該小而緊湊,並且依靠應用程序服務來完成它需要做的事情。如果這些服務經過了充分測試,我還有什麼要在我的控制器中測試的?
  • 控制器基本上是用戶與應用程序交互的方式。這就像用戶界面一樣,很容易改變。例如,我可能有一天會決定一個特定的動作屬於不同的控制器。可以肯定的是,如果我們採用「無控制器操作」的範例,這一點可能不那麼強大。
  • 我離開這裏嗎?看看其他人的代碼,我非常感興趣的是單元測試控制器。

    回答

    1

    查看this post瞭解更多信息。

    簡而言之,測試您的控制器非常適合查看(進程)是否正常工作,但它們在我認爲的調試方面幾乎沒有任何價值。

    我寧願單元測試我的(單位),以便我知道我得到每個預期的結果。

    然後我會依次測試設備,最後是控制器,但只是爲了完整性。

    從你的單元網絡獲得propper測試,你比調用控制器的高級消息更好地調試信息。

    +0

    作爲一個SUT來測試一次控制器是否有意義(只是爲了確保您傳遞正確的數據,比方說),另一個作爲集成測試或功能測試? – blockhead 2009-11-23 00:50:02

    +0

    是的,我認爲它的確如此。單元測試將測試單個功能,併爲您提供一種方法來測試其他代碼更改時單元是否損壞。集成測試然後測試端到端流程。最終用戶體驗會是什麼。並非所有控制器都需要以這種方式進行測試,但複雜的控制器可能需要進行自己的測試。您想要編寫的測試的粒度以及您的控制器代碼的舒適程度取決於您。 – griegs 2009-11-23 01:01:52

    2

    我並不總是單元測試兩種最簡單的MVC控制器,但我發現一對夫婦的情況下,測試是有益的(至少在Java中的Spring MVC):

    1. 當我創建一個控制器修改用戶會話中的某些內容(例如,添加整個站點使用的會話屬性)。它只是驗證正確的數據被添加到會話中。
    2. 當控制器必須執行認證/授權檢查以決定顯示哪個視圖時。我添加了2個測試用例,其中1個用戶會話擁有正確的憑據(斷言它們被轉發到所需的視圖),1個沒有(聲明它們被轉發到登錄視圖)。