我有一个NUnit测试,有时会在开始时抛出异常,所以我想在使用.After
约束的延迟和间隔的超时中包装它。
这不是确切的代码,但它是我正在谈论并试图实现的一个例子。
[Test]
public void ThrowsNothingAfterTest()
{
var i = 0;
Assert.That(() =>
{
if (i == 1)
{
return true;
}
i++;
throw new NotImplementedException();
}, Throws.Nothing.After(1000, 100));
}
我认为上面的测试会在第一次失败然后经过一段时间,但它只运行一次并失败。
答案 0 :(得分:2)
After
可能在功能上与Throws.Nothing
不一致。我们应该检查一下,并可能找出一种方法使它在语法上不可能。
您所使用的语法是:每隔100毫秒继续尝试此调用,直至不抛出,最多1000毫秒(10次)。这对你的例子是无害的,但在许多情况下是不可取的。这就是为什么我倾向于使其不可编辑而不是使其工作。 : - (
如果您可以编写代码以在初始化服务时返回true,那么您只需使用
即可Assert.That(() => IsServiceUpAndRunning(),
After(1).Seconds.PollEvery(10).Milliseconds);
如果抛出异常,只需在方法中捕获它并返回false。