2011-11-30 19 views
2

我很鬱悶的MS測試。我想創建一個集成測試,以便我可以檢查我的存儲庫是否按預期執行所有CRUD操作。 Therfor我創建了3種測試方法MS測試有序測試 - 我怎樣才能讓它以清晰和簡單的方式運行?

  1. 我在哪裏添加數據,然後再次讀取 - >測試suceeds如果插入的項目可以被檢索
  2. 我在哪裏更新插入項,然後又看了一遍 - >測試suceeds如果檢索項目具有相同的密鑰但已更改數據
  3. 我在哪裏刪除插入的項目並嘗試再次閱讀 - >如果無法檢索項目,則測試結束。

我想這樣做的主要原因是爲了減少我需要的測試設置的數量。

第一個想法是添加一個測試方法,它可以做所有事情,但如果測試失敗,比第三部分我無法看到,其他人已經成功。

這就是爲什麼我嘗試了有序測試,應該可以說明框架調用方法的順序。只要我使用我平常避免的測試視圖,這就行得通。我通常使用control + R + T,但是這也會以隨機順序執行每個方法,而不是在定義的方法中執行。最後但並非最不重要的一點是,如果我想在構建機器上執行有序測試,似乎必須做額外的工作。

我不明白爲什麼這些方法是以隨機順序調用的。我無法理解爲什麼我需要一個外部文件,並且無法輕鬆定義代碼中的順序。

所以我真正的問題是: 我做錯了什麼?爲什麼微軟將這種奇怪的功能添加到它的工具中?爲什麼不說:[TestMethod(「CRUD」,1)]並使用屬性的參數來定義組和順序。

在我看來,微軟(再次)MS測試中的一個很難的方式,可以做很容易的事情。

感謝您的幫助。

回答

1

就「爲什麼」而言,我認爲這樣做是爲了防止測試套件的用戶將時態依賴性引入到他們的測試中。這是一個單元測試框架,他們的意思是。

爲了解釋我的意思,設想你有一個測試首先執行,並且該測試具有在特定目錄中創建一堆文件的副作用。然後你有第二個測試使用這些文件。現在,訂購不僅僅是一種便利 - 這是必要的。第二項測試對其本身毫無意義。我相信這些線索編寫者會爭辯說,這些應該是單個測試,或者(最好)不要使用單元測試套件來做這樣的測試。

至於你做錯了什麼,我不知道你做錯了什麼。我認爲你只是試圖以一種作者沒有打算的方式來使用這個工具。就個人而言,如果我正在爲CRUD操作編寫集成測試套件,我根本不會使用MS Test或單元測試框架。我要麼使用專門設計來做這種事情的工具,要麼通過執行CRUD操作並報告結果來編寫一個運行數據訪問DLL的小應用程序。

您自己的家庭滾動實用程序可以包含在您的解決方案中作爲啓動項目快速運行,由您的構建等調用。如果你想多花一點時間,你甚至可以讓它生成一個小報告或使其輸出符合與MS Test(那些測試XML文件)相同的輸出。

+0

謝謝你的回答。我從來沒有將MS Test看作單元測試框架,即使這個詞在用戶界面中也經常使用。我的意思是,我們有可能附加數據庫,檢查應用程序用戶界面的行爲,並在需要創建參數化測試時使用文件。這聽起來更像是集成和系統測試,而不是像微小和易於執行的單元測試那樣在理論上進行描述。不要誤會我的意思,但現在我明白了Roy Osherove在寫道時所說的話:「MS測試就像IE6」 –

+0

嗯,我個人僅將它用於單元測試,但我確實看到了你的觀點。看起來很奇怪,他們有這樣的理念,然後允許你做需求文件和測試運行的東西。我來自xUnit背景,所以MS Test有一些問題。對於你正在做的事情(有序測試,可能值得一看,如果NUnit或MBUnit會支持你的測試排序 - 你可能更喜歡使用它們......把它們想象成Firefox和Chrome到MSTests的IE6 :)) –

相關問題