如何使用nunit測試異步方法?如何使用nunit測試異步方法
5
A
回答
2
如果你有.NET的C#編譯器版本5,那麼你可以使用新的異步和等待關鍵字。 附上鍊接:http://simoneb.github.io/blog/2013/01/19/async-support-in-nunit/
如果可以使用封匿名lambda表達式,使用線程同步。
如)
[TestFixture]
class SomeTests
{
[Test]
public void AsyncTest()
{
var autoEvent = new AutoResetEvent(false); // initialize to false
var Some = new Some();
Some.AsyncFunction(e =>
{
Assert.True(e.Result);
autoEvent.Set(); // event set
});
autoEvent.WaitOne(); // wait until event set
}
}
0
你可以使用NUnits Delayed Constraint
[TestFixture]
class SomeTests
{
[Test]
public void AsyncTest()
{
var result = false;
var Some = new Some();
Some.AsyncFunction(e =>
{
result = e.Result;
});
Assert.That(() => result, Is.True.After(1).Minutes.PollEvery(500).MilliSeconds);
}
}
這個例子是NUnit的3.6,但早期版本還支持延遲約束,但查找起來的語法是不同的。
+0
StackOverflow不應該在沒有解釋的情況下讓投票失敗。請在投票時解釋自己,這樣可以幫助我們全部學習。 – Daryn 2018-02-02 13:32:24
你有什麼問題?你只是測試它們;並檢查他們正在做的事情。我的意思是,無論你需要等待什麼。這只是看你是否可以通知你,所以你不需要投票。可能或不可能。 – 2010-03-12 09:26:05
[]「我如何用NUnit測試異步方法,最終與另一個框架?」](http://stackoverflow.com/questions/12191831/how-do-i-test-an-async-method- with-nunit-minimize-with-another-framework) – chwarr 2014-05-17 05:01:53
5 upvotes爲7個字的問題顯示沒有研究工作? _ [我如何問一個好問題?](http://stackoverflow.com/help/how-to-ask)_。我很嫉妒;) – MickyD 2015-09-11 09:12:53