如果我有一個測試對象使用定時器來定時執行一些操作,那麼測試它的好方法是什麼?是否使用Thread.Sleep測試了定時間隔的操作?
一個method是將定時器包裝在一個接口中,並將其作爲依賴注入。
但是,我想避免創建另一個抽象。看來我可以通過注入更新間隔而不是定時器來避免這種情況。然後在我的測試中(假設採用AAA風格的測試),我在Act之後和認定之後放了一個Thread.Sleep
,使用非常小的時間值,因此測試不需要很長時間就可以運行。
這是一個壞主意嗎?我知道它可能並不完全遵循TDD的原則,但是似乎必須有一條線路,讓您停止在合同中注入任何東西並注入它。
」必須有一條線,在那裏你停止用合同注入所有東西並注入它「 - 異端,我說;) – 2012-02-02 22:53:27
Windows中線程的調度不是確定性的,所以做這樣的事情可能會使你的測試失敗隨機。 – svick 2012-02-03 01:53:10
@svick我沒有真的想檢查任何有關線程調度。只要我的計時器成功,就會在預期的時間內+一段寬限期內發生函數調用。像這樣的情況會不會受到這些問題的影響? – 2012-02-03 14:54:47