2012-08-14 35 views
0

首先爲奇怪的標題道歉,但我不知道如何命名我想說的話,所以我稱之爲「定時斷言」。
基本上可以說,一個人想要測試某些類的功能,但該類方法是異步的(又名例如instance.Start()立即返回,但私人成員instance.Mode將更改爲枚舉2秒後開始)。所以 會像這樣:是否定時聲明好主意?

MyObject instance; 
instance.start(); 
// invented function, first part is the normal assert, 3000 is delay in milliseconds 
timed_assert(instance.GetMode()==MyObject::Mode::Started, 3000); 

是個不錯的主意? 請注意,實現timed_assert作爲阻塞函數是微不足道的(sleep + normal assert),使其非阻塞超出了我的技能lvl,但如果您確信可以完成它,則可以自由地將其視爲一個選項。

+1

硬編碼計時從來就不是一個好主意。根據定義,它們不是確定性的。一種選擇是輪詢超時,如果你不能寫一個阻塞函數。 – 2012-08-14 11:21:18

+0

+1用於輪詢超時。不要忘記爲超時情況編寫強大的拆卸邏輯。 – 2012-08-14 11:29:41

+0

,但不能你有要求,就像在500毫秒的國家必須改變爲X,原因:用戶討厭延遲:) – NoSenseEtAl 2012-08-14 11:40:47

回答

0

我想你已經在評論中有你的答案了....「不。定時斷言不是一個好主意。」

您所描述的要求類型的要求「在500毫秒之內的狀態必須更改爲X,原因:用戶討厭延遲」不夠具體。

運行系統的硬件是什麼?它下面有什麼負載?

這種絕對要求必須精確指定,應該被視爲性能測試而不是單元或集成測試。無論您使用哪種測試環境,您的設備/集成測試都應運行綠色。你沒有測試你的硬件,是嗎?

相關問題