2012-05-03 96 views
2

我覺得自己陷入了這場政治/宗教的鬥爭。從我所做的研究中,我發現很多人都非常強烈地相信UI測試通過單元測試是愚蠢的,而且真正的人可以做得更好。我同意。ASP.NET MVC3 UI單元測試

不過,看起來上級讓我單元測試用戶界面。 (這已經很奇怪了,因爲他們以前告訴過我我只需要寫一個測試計劃而不是真正的測試)。盡我所能,我對單元測試並不是很熟悉。我試圖使用最小起訂量,但我找到的所有教程都使用存儲庫而不是服務,我正在圍繞服務構建我的Web應用程序。

舉個例子這裏(的一部分)服務:

public class ProductService : Service<Product, EntitiesDbContext> 
    { 
     ... 
     public Product GetProduct(int id) 
     { 
      return All().FirstOrDefault(p => p.ProductId == id); 
     } 
     ... 
    } 

我的假設是,我需要建立讓我們說,一個新的產品使用起訂量,然後有人驗證硬編碼輸入使用我的模型。我不知道如何做到這一點。

測試UI是我的大部分工作作爲網站通過形式在很大程度上依賴於用戶輸入。再次,我發現用單元測試進行測試非常愚蠢,因爲我的模型非常嚴格,只允許某些輸入。

我的問題: 我怎麼會去使用MOQ或可能另一個測試框架測試表單輸入? 我聽說有些程序可以跟蹤你的行爲並複製它們,但是我找不到它們,我也相信這樣的技術會花錢。

回答

1

Visual Studio 2010 Ultimate擁有一種稱爲編碼UI測試的功能。基本上,您可以在Internet Explorer中記錄您的操作,該操作將轉換爲添加斷言的C#代碼,然後在不同的瀏覽器中重播操作。

然而,這是很難測試針對數據庫支持的Web應用程序,因爲你很難找出哪些是新添加的行。爲了簡化問題,您可能需要設置一個樣本數據庫,在按順序運行測試套件之前將其重置爲初始狀態。

查看關於如何使用編碼UI測試的各種TechEd視頻。例如。 http://www.youtube.com/watch?v=rZ8Q5EJ2bQM

1

你測試你的UI動作或者是你測試的實際UI。

如果要測試的操作和他們發送什麼樣的數據視圖,然後做使用類似NUnit單元測試,xUnit等,並使用像MOQRhino Mocks一個MOQ框架是做正確的事。

如果你請使用類似於Selenium的自動化測試框架將是合適的工具

1

您也可以嘗試Ivonna(http://ivonna.biz測試實際UI(由Web服務器返回的HTML) )進行MVC測試 - 不測試你的客戶端,但可以讓你測試你的Asp.Net服務器端代碼。

但首先你應該問自己(或你的管理)一個問題:我想考什麼?客戶端/服務器端驗證?您的服務?行動方法?

1

開發人員有很多人反對自動測試UI。我之前做的是使用「Selenium Core」,這讓我可以在Firefox中修復測試,然後保存爲C#,然後混合使用C#和Html文件,我可以在其中進行以下操作。

  1. 忘記密碼 - 從數據庫中自動隨機用戶名會進入,然後加密的密碼被通過電子郵件發送給我設置各種不同的Gmail帳戶和我有C#API登錄到Gmail和獲取新的重置密碼,然後重定向和有應用程序中輸入新的密碼,我可以把這個CI服務器哈德森和全天自動化這個測試長,成功和錯誤等的記錄......

  2. 新註冊......類似#1

所以爲您的UI測試,讓我們打電話,功能或UAT測試...... 然後爲真正的單元測試,這是NUnit/Xunit,MSTest等,然後MOQ等...可以協助。 集成測試真正測試整個應用程序與連接系統...像文件系統或WCF或數據庫,不被「嘲弄」

他們都有自己的優點和缺點,沒有一個是完美的,但大多數人們最終認爲單元測試是最大的壓力。