首先为奇怪的标题道歉,但我不知道如何命名我想谈论的内容,所以我称之为“定时断言”。
基本上可以说一个人想要测试某些类功能,但类方法是异步的(例如 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,但如果你确定它可以完成,你可以自由地将其视为一个选项。