2013-04-01 122 views
2

我已經在單獨的項目中編寫了幾個單元測試。在開發過程中,我每次都將DLL加載到NUnit.exe中來檢查結果。鑑於我已經完成了編寫單元測試的工作,如何組織單元測試並將其附加到解決方案。將單元測試附加到C#項目的標準方法

我想在解決方案目錄中創建「工具」文件夾,然後放置所有NUnit相關的庫,並在測試項目的後期事件中,我迷上了下面的nunit,它的工作原理。

"$(SolutionDir)tools\nunit\nunit-console.exe" "$(TargetPath)" 

但在我的一個測試中,我指的是一個sqlite數據庫。如果我硬編碼它的位置它工作正常,但我打算把它放在「App_Data」文件夾下的測試項目。所以,我試着用下面的代碼來獲得相對路徑,但它不工作。但是,當我將文件複製到「工具」文件夾時,它工作正常,我猜想執行上下文來自NUnit文件夾。

Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location),"App_Data\\test.txt") 
+3

爲什麼你的__unit test__讀取一個物理文本文件? –

+0

對不起,它是一個單元測試的sqlite數據庫文件。 – Sunny

+1

同樣的問題適用:爲什麼你的**單元測試**從實際數據庫中讀取? –

回答

0

如果沒有特別需要的NUnit,你還可利用內置的單元測試Visual Studio支持......這已被納入到最新的速成版,以及和你沒有與這樣的問題鬥爭;)

無論哪種方式,我相信你誤解了單元測試的基礎知識。我們從不測試一個實際的數據庫,這是一個非常糟糕的做法。你應該對這個話題做一些研究,看看mocking背後的理論。

+0

這是用於單元測試的sqlite數據庫。應用程序的實際數據庫是SQL Server。 – Sunny

+0

@Sundeep,仍然沒有真正主張它的使用。如果你決定採用完全不同的方式來存儲未來的東西呢?你的單元測試不能依賴於這樣的事情......嗯,他們可以,但這不是一個好主意。做你想做的事,我只是覺得這是一個好主意。如果不適合你,也許對於那些關心別人的人。 – walther

+0

我聽到你說的話,在我的情況下,設計限制注入模擬值,因爲它們與DB層緊密結合。因此,我們更喜歡這種方式,它與內存中的對象相同,但數據是從簡單的select語句中提取的,最終映射到DTO中。 – Sunny

相關問題