2010-08-16 21 views
2

我繼續讀了不少意見贊成單元測試,這是一個過程我一直沒到目前爲止以下,並有幾個問題的代碼。實用的方式做單元測試與改變環境

據我所知,單元測試的基礎知識是在代碼中運行一些過程,並將返回值與期望值進行比較,並查看它是否匹配以確定測試是否已通過。

在我所見過的簡單的例子,它是相當容易,因爲他們只是在測試中的整數或小數輸出值,這是相當簡單確實測試,因爲一切都或多或少在內存中發生。

現在,讓我們想象一下,我有一個寫入文件的過程,或者將記錄插入到SQL Server數據庫中......每當我運行測試時,我都會將這些寫入發生在我的文件或我的服務器,如果我多次運行測試,如果記錄已經插入到先前的測試中,我可能會遇到問題...如主鍵違規。

我知道測試應該在測試服務器上完成,但即使如此,很多測試似乎會導致不切實際的維護,例如每次要運行測試時恢復數據庫都會令人沮喪,長期消耗。

總之,我很好奇,想知道怎麼做定期的單元測試開發人員管理這種測試,修改環境的狀態,在輕鬆,時間和成本效益和簡單的方式?

謝謝。

我主要是在C#編碼和使用VS 2008,但我想這是一個非常通用的問題

回答

3

單元測試是指測試代碼中分離,你指的是集成測試或建立驗證測試的測試。

當爲使用數據庫或流的代碼段編寫單元測試時,通常使用模擬框架(moq是我總是建議的框架)或專注於單獨測試代碼的各種技術中的任何一種。

4

你需要尋找到Mocking frameworks

這些允許您設置測試就好像您正在寫數據庫一樣,但您根本沒有做任何更改。您正在測試代碼而不是數據庫連接,只要模擬對象返回值就好像它是您的測試有效的真實代碼一樣。

您可以設置模擬對象來測試有效和無效的情況下,你甚至可以模擬失去數據庫連接(例如)。

+0

謝謝,任何建議,好的和容易的,不需要太長時間學習? – 2010-08-16 16:03:23

+1

@Kharlos Dominguez:如果你熟悉lambda表達式,Moq非常簡單,它是一個單獨的dll,可以讓你的測試項目參考,然後添加你的使用,下面是使用它的快速入門:http://代碼。 google.com/p/moq/wiki/QuickStart – 2010-08-16 16:59:36