根据这个讨论,以下两种方法应该没有区别:
public async Task Foo()
{
await DoSomethingAsync();
}
public Task Foo()
{
return DoSomethingAsync();
}
Run Code Online (Sandbox Code Playgroud)
实际上,似乎对于非常简单的方法,没有 async/await关键字的调用将是首选,因为它们会消除一些开销.
然而,这显然并不总是在单元测试中起作用.
MSTest的
[TestClass]
public class AsyncTest
{
[TestMethod]
public async Task Test1()
{
await Task.Delay(0);
}
[TestMethod]
public Task Test2()
{
return Task.Delay(0);
}
}
Run Code Online (Sandbox Code Playgroud)
NUnit的
[TestFixture]
public class AsyncTest
{
[Test]
public async Task Test1()
{
await Task.Delay(0);
}
[Test]
public Task Test2()
{
return Task.Delay(0);
}
}
Run Code Online (Sandbox Code Playgroud)
的xUnit
public class AsyncTest
{
[Fact]
public async Task Test1() …Run Code Online (Sandbox Code Playgroud)