我已經在我簡單的項目中準備好單元測試DAL了。單元測試DAL - 請批評
我基本上有一個名爲FooDataAccess有幾個非常簡單的功能類,可以說他們的3這樣的:
int InsertFoo(string fooName)
void UpdateFoo(int fooID, string fooName)
void InsertFoosDepedency(int fooID, string someValue)
我所做的就是這是什麼 - 把4個SQL腳本我的單元測試項目中,最後一個是嵌入式資源。
1)創建(單元測試)數據庫腳本,2)創建對象的腳本,3)插入的查找表和4)全部刪除,但查找表值
的想法是,任何人都先使用項目手動應手動運行腳本1-3作爲一次性設置。然後在每個單元測試啓動時執行腳本#4 ...(小應用程序,你甚至可以在測試級別上運行所有的)
OK,到目前爲止好...
所以我有我的單元測試數據庫設置,作爲一個空白的石板。測試第一個函數InsertFoo()顯然非常簡單。我調用函數,然後只是斷言(ExecuteSQL(「select foo(select)count(*)」)> 1),Assert(ExecuteSQL(「select fooName from t_foo」)= expected))等等。
有點卡住是那些需要依賴性的,就像我例子中的第三個函數,甚至是更新。
爲我的測試範圍臨時刪除所有外鍵約束是否合理?否則,爲了單元測試InsertFoosDepedency(int fooID,string someValue)函數,我必須先執行一些任意的sql(手動插入一條記錄到FOO表並返回FooID)...
OR,我應該做後者嗎?
任何和所有的反饋,非常感謝。
UPDATE:它的工作乾淨利用內聯SQL來創建依賴項。我想我只是在尋找評論&對這種單元測試DAL方法的批評。再次感謝
我對我的DAL上的所有呼叫者已經使用模擬對象。 但我仍然想單獨測試DAL函數。 我不太害怕搞砸數據庫,因爲這是專門爲單元測試而創建的數據庫。 也許我應該調用InsertFoo()創建我的foo並獲取我的ID以獲取依賴關係?但是這會打破它作爲'單元'測試的概念嗎? – dferraro 2009-10-27 16:44:59
我不知道我跟着你。必須首先插入依賴關係,以便可以依賴它們?你的意思是依賴而不是依賴嗎? – serialhobbyist 2009-10-27 17:23:56
你是對的,我的錯。我的意思是家屬。再次感謝 – dferraro 2009-10-27 17:27:07