從this問題繼...我試圖單元測試以下情形:是否可以在單元測試中抽出時間?
我有一個類,允許一個調用一個方法來執行一些操作,如果失敗等待一秒鐘,回憶一下,方法。
說我想調用一個方法DoSomething()...但是在DoSomething()拋出異常的情況下,我想能夠重試調用它最多3次,但等待1秒每次嘗試之間。在這種情況下,單元測試的目的是驗證當我們調用DoSomething()3次,每次重試之間等待1秒,所花費的總時間> 3秒。
不幸的是,我能想到的,以測試它的唯一方法,是用秒錶....有兩個副作用...
- 需要3秒,執行測試到火候。 ..我通常喜歡我的測試以毫秒運行
- 運行測試的時間量相差大約+/- 10毫秒左右,這可能會導致測試失敗,除非我考慮此差異。
什麼將是很好的,如果有模擬出在這個時間的依賴,使我的測試能夠運行更快,在它的結果相當一致的方式。不幸的是,我想不到這樣做...所以我想我會問,看看你們有沒有遇到過這個問題...
在C#3.0中,您可以用Func替換Clock接口。 –
2009-08-21 07:15:37
有一些Java模擬庫。例如EasyMock。 – 2009-08-21 09:10:08
對於Java,代碼通常從新的Date()中獲取當前時間。使用EasyMock沒有幫助,因爲您無法覆蓋返回的日期。因此引入了包裝「Clock」類。對不起,我沒有解釋清楚。 – ndp 2009-09-19 03:48:45