我正在開發Web服務的驗收測試。測試是通過Specflow驅動的,並使用SQL Server CE作爲數據庫。該服務與其他應用程序和模塊共享數據庫,並使用通過其中一個應用程序創建的一些數據。自動驗收測試如何使用設置初始狀態?
但從我的產品的角度來看,有兩種類型的「數據」:
- 數據,我們只消耗
- 我們創建/數據修改
運行之前一個測試用例,你設置了數據庫的初始狀態。對於僅使用的數據,初始化數據的唯一方法是直接插入數據庫。但對於託管數據,我們可以直接在數據庫中設置狀態,也可以像用戶那樣執行,調用API。
例如,我想測試我的方法'updateItem'是否正確更新項目的價格爲'y'。爲了能夠執行這個方法,我需要用價格'x'設置我的數據庫。這樣做有兩種方式:
- 設置項的狀態直接在數據庫中
- 召喚「createItem」
的優劣對於第一種方法是,我只是執行方法我想測試,所以如果測試失敗,只有一個原因失敗。缺點是如果將來創建項目的狀態發生變化(添加一個新字段),我需要手動在初始狀態下進行更改。
另一方面,第二種方法的優點和缺點是相反的。測試可能會失敗,因爲'createItem'失敗,儘管一些測試框架會告訴你這是失敗的設置,而不是實際的測試。但是無論'createItem'中發生了什麼變化,這些變化都會自動包含在測試中,而且您不必手動更新初始狀態。
任何意見是非常感謝。
我不得不同意山姆,但這就是爲什麼我會親自從未在測試中使用數據庫。正如我在http://stackoverflow.com/questions/17047130/specflow-integration-testing-with-database-patterns中所說的模擬它! :-) – AlSki