2012-10-11 64 views
1

我正在爲我創建的計時器編寫一個單元測試,並且遇到了我經常遇到的其他項目遇到的問題。我想創建一個單元測試,啓動我的計時器,等待片刻,然後在計時器運行後檢查計時器的值。然後,我可以測試我的計時器中的所有功能。如何暫停Boost單元測試?

有沒有辦法做到這一點?我在文檔中沒有看到任何內容。如果這不是一個好的做法,請告訴我應該做些什麼。

回答

5

如果您正在測試涉及時間的任何事情,那麼您可能需要虛擬化您的時間概念,以便您可以手動進行更改。根據你用於定時器的內容,這可能更容易或更難做(或內置),但一旦你完成了,你可以使用諸如「setVirtualTime(time)」之類的東西編寫你的單元測試。

這種方法的一些優點:

  1. 的單元測試的運行不依賴於有多久的計時器有問題(一旦你有時間測量定時器/天本就變得很重要)
  2. 您的單元測試是確定性的,並且不會隨着線程調度的變幻莫測而隨機失敗。
1

也許在你的單元測試中調用sleep()

+0

哈 - 呃,這很明顯。不能相信我沒有想到它。此外,提升顯然有一個線程睡眠:http://stackoverflow.com/questions/4184468/sleep-for-milliseconds – Darkenor