async/await单元测试代码覆盖率

Jer*_*ian 10 c# unit-testing asynchronous async-await visual-studio-2013

如何为async/await方法编写单元测试,我正在使用Visual Studio 2013.

假设我们有一个异步方法:

public async Task DoSomethingAsync()
{
    ...
    await _service.DoInternalAsync();
    ...
}
Run Code Online (Sandbox Code Playgroud)

由于我使用的是最新版本的Visual Studio,因此它对异步方法单元测试有很好的支持:

[TestMethod]
public async Task DoSomthingAsyncTest()
{
    ...
    await _objectUnderTest.DoSomethingAsync();
    // how to verify the result??? here is what I did
    _service.Verify(_ => _.DoInternalAsync());
}
Run Code Online (Sandbox Code Playgroud)

基本上,我有两个问题:

  1. 如代码中所述,如何验证Task结果?我做得对吗?
  2. 如果我运行该测试,VS会说测试通过.但是当我检查代码覆盖率时,await _service.DoInternalAsync()似乎没有涵盖句子,从代码覆盖率结果来看,它提示MoveNext()句子中有6个未覆盖的块.它内有什么问题?

Jer*_*ian 8

好的,从我的研究来看,代码覆盖问题是最新版Visual Studio 2013中的Visual Studio错误,他们会在下一个主要版本中修复/增强它.

引自反馈:

您所看到的问题是由于我们最终的错误导致我们尚未完全支持代码覆盖中的async/await模式.这项工作尚未完成,应该是我们在下一次重大更新/发布中提供的内容.此问题没有干净的解决方法.