0

首先为奇怪的标题道歉,但我不知道如何命名我想谈论的内容,所以我称之为“定时断言”。
基本上可以说一个人想要测试某些类功能,但类方法是异步的(例如 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 实现为阻塞函数是微不足道的(睡眠 + 正常断言),使其成为非阻塞超出了我的技能 lvl,但如果你确定它可以完成,你可以自由地将其视为一个选项。

4

1 回答 1

0

我想你已经在评论中得到了答案……“不。定时断言不是一个好主意。”

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

系统在什么硬件上运行?它在什么负载下?

这种绝对要求必须精确指定,并且应该被视为性能测试而不是单元或集成测试。无论您在什么测试环境上执行单元/集成测试,都应该运行绿色。你不是在测试你的硬件,是吗?

于 2012-08-15T12:53:46.897 回答