【发布时间】:2013-01-14 13:34:32
【问题描述】:
我的测试代码中有这个断言
Assert.That(() => eventData.Count == 0,
Is.True.After(notificationPollingDelay),
"Received unexpected event with last event data" + eventData.Last().Description());
在一段时间后断言某些条件并且在失败时会产生一条消息。它无法运行,因为消息字符串是在断言开始时构造的,而不是在断言结束时构造的。因此eventData 集合仍然是空的(因为它最初是空的)并且尝试获取集合中最后一项的Description 失败。 NUnit 中是否有解决方法或体面的替代方法,或者我是否必须在测试中恢复使用 Thread.Sleep?
PS:我使用的是 NUnit 2.5.10。
【问题讨论】:
-
据我所知,这不是原生 NUnit 断言语法。您使用的是哪个断言库?
-
@DanielHilgarth - 当使用基于约束的模型时,这是有效的 NUnit 断言语法。
After是延迟约束 nunit.org/index.php?p=delayedConstraint&r=2.6.2 -
@manojlds:感谢您提供的信息。对于任何感兴趣的人:DelayedConstraint 与 EqualConstraint 结合使用 constrained-based assert module。
-
我觉得你运气不好。根据我在上一条评论中链接到的文档,没有过载可以接受委托在以后创建消息。
-
Nnnnoooooooooooooooo卢克的声音>