2
我使用NHibernate進行數據訪問。我正在爲我的數據訪問層編寫一些測試,並在特定日期範圍內選擇記錄。NHibernate生成的值和測試
在測試中,我通過在一個範圍內選擇隨機日期來生成測試數據,然後嘗試選擇該範圍內子集內的日期記錄。例如,我生成的日期在昨天和明天之間,然後我只選擇日期爲今天的記錄。
問題是這些日期通常由DB生成 - 它們基本上設置爲generated="insert"
。有沒有一種方法來設置NHibernate,使它使用DB生成的日期,當用戶不提供一個日期?
如果沒有,任何人都有在測試過程中減輕這種情況的策略?
我發現暴露私有/保護的東西半信半疑。您建議您將測試與正在測試的課程的內部結構相結合。基本上,你測試'Testable'而不是'RealEntity',從而破壞了整個單元測試的想法。 – 2010-08-20 17:46:19
說「它打破了單元測試的整個想法」是極端的。我提出的選項是解決使用nhibernate時遇到的常見問題或任何其他使用代理類(或反射)爲非公共設置者設置屬性的問題的解決方法。根據我的建議,將受測試的類子類化,模擬nhibernate用動態代理所做的事情,以便可以將實例置於一種狀態,就好像它被nhibernate水合,並保持所有其他行爲不變。這是不理想的,我渴望聽到替代品,但它是可行的。 – mattk 2010-08-30 10:32:22