没有使用async/await关键字为什么异步单元测试会失败?根据这个讨论,以下两种方法应该没有区别:publicasyncTaskFoo(){awaitDoSomethingAsync();}publicTaskFoo(){returnDoSomethingAsync();实际上,似乎对于非常简单的方法,没有async/带有await关键字的调用是首选,因为它们消除了一些开销。然而,这显然并不总是适用于单元测试。MSTest[TestClass]publicclassAsyncTest{[TestMethod]publicasyncTaskTest1(){awaitTask.Delay(0);}[TestMethod]publicTaskTest2(){returnTask.Delay(0);}}NUnit[TestFixture]publicclassAsyncTest{[Test]publicasyncTaskTest1(){awaitTask.Delay(0);}[测试]publicTaskTest2(){returnTask.Delay(0);}}xUnitpublicclassAsyncTest{[事实]publicasyncTaskTest1(){awaitTask.Delay(0);}[事实]publicTaskTest2(){returnTask.Delay(0);由于任务仍在等待所有情况,这会影响NUnit和MSTest测试运行程序的异步关键字是什么?也许是一些反思性的问题?听起来那些测试运行器可能正在使用反射来检查返回Task的方法是否真的是一个异步方法。这并不意味着该方法在运行时会有不同的行为-但它们只是没有运行。这就像在说:publicstringName{get;放;}等同于:私有字符串名称;公共名称{获取{返回名称;}设置{名称=值;就行为而言,它们在逻辑上是相同的,但如果你努力尝试反射,你就能分辨出来。在这种特殊情况下,还有其他更细微的差异,但适用相同的一般原则。看起来在当前的NUnit代码中(在撰写本文时),检测位于AsyncInvocationRegion.cs中。不可否认,编写返回Task但不使用异步方法的单元测试至少是不寻常的——但这绝不是不可能的。以上是C#学习教程:为什么不使用async/await关键字,异步单元测试会失败?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
