gpt4 book ai didi

c# - 不立即执行的单元测试代码

转载 作者:行者123 更新时间:2023-11-30 19:51:53 25 4
gpt4 key购买 nike

我正在使用 C# 3.0 和 NUnit。我想知道是否有一种标准方法可以对一段时间后执行的代码执行单元测试。例如,我有一个简单的静态类,我可以向其注册方法,并在 n 毫秒后调用它们。我需要确保调用委托(delegate)方法中的代码。

例如,下面的测试将始终通过,因为在方法退出之前没有断言。

[Test]
public void SampleTest()
{
IntervalManager.SetTimeout(delegate{
Assert.Equals(now.Millisecond + 100, DateTime.Now.Millisecond);
}, 100);
}

甚至可以对不立即执行的代码进行单元测试吗?

干杯,

保罗

最佳答案

这个怎么样?它会导致测试阻塞一些预期的最长时间,以便回调在退出之前触发和完成,并报告错误。

public void Foo() {
AutoResetEvent evt = new AutoResetEvent(false);
Timer t = new Timer(state => {
// Do work
evt.Set();
}, null, 100, Timeout.Infinite);
if (evt.WaitOne(500)) {
// method called and completed
} else {
// timed out waiting
}
}

关于c# - 不立即执行的单元测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/628751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com