定时断言好主意吗?

时间:2012-08-14 11:15:25

标签: unit-testing integration-testing

首先为奇怪的标题道歉,但我不知道如何命名我要谈的内容,所以我称之为“定时断言”。
基本上可以说,一个人想要测试某些类功能,但该类方法是异步的(例如,instance.Start()立即返回,但私有成员instance.Mode将在2秒后更改为enum Started)。所以 会是这样的:

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),使得非阻塞超出了我的技能范围,但如果您确定可以这样做,您可以自由地将其视为一个选项。

1 个答案:

答案 0 :(得分:0)

我认为你已经在评论中得到了答案......“不。时间断言并不是一个好主意。”

您描述的“500 msecs状态必须更改为X,原因:用户讨厌延迟”的要求不够具体。

系统运行的硬件是什么?它有什么负担?

必须精确指定这种绝对要求,并且应将其视为性能测试而非单元或集成测试。无论您使用哪种测试环境,您的单元/集成测试都应该运行为绿色。你没有测试你的硬件,是吗?