我想更好地使用NUnit來測試我編寫的應用程序,但我經常發現,我編寫的單元測試可以直接鏈接到環境或底層數據庫開發機器。NUnit測試應用程序,而不是環境或數據庫
讓我舉個例子。
我正在寫一個類,它有一個單一的責任來回顧一個字符串,該字符串已被另一個應用程序存儲在註冊表中。密鑰存儲在HKCU \ Software \ CustomApplication \ IniPath中。
測試我最終寫作看起來像這樣;
[Test]
public void GetIniDir()
{
RegistryReader r = new RegistryReader();
Assert.AreEqual(@"C:\Programfiles\CustomApplication\SomeDir", r.IniDir);
}
但這裏的問題是,字符串@ 「C:\ PROGRAMFILES \ CustomApplication \ SomeDir」 實際上只是正確的現在。明天它可能會變成@「C:\ Anotherdir \ SomeDir」,並突然間斷了我的單元測試,即使代碼沒有改變。
當我創建一個對數據庫執行CRUD操作的類時,也會出現此問題。數據庫中的數據可能會一直改變,這又會導致測試失敗。所以即使我的班級做了它打算做的事情,它也會失敗,因爲數據庫會返回我最初編寫測試時所擁有的更多客戶。
[Test]
public void GetAllCustomersCount()
{
DAL d = new DAL();
Assert.AreEqual(249, d.GetCustomerCount());
}
你們有沒有寫測試的提示,它不依賴於周圍的環境呢?
但是,你不是真的單元測試,你是集成測試。 – 2009-02-28 16:10:59