gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:07:20 26 4
gpt4 key购买 nike

如何为异步/等待方法编写单元测试,我使用的是 Visual Studio 2013。

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

public async Task DoSomethingAsync()
{
...
await _service.DoInternalAsync();
...
}

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

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

基本上,我有两个问题:

  1. 如代码中所述,如何验证Task的结果?我这样做对吗?
  2. 如果我运行那个测试,VS 会说测试通过。但是查看代码覆盖率时,await _service.DoInternalAsync()这句好像没有被覆盖,从代码覆盖率结果来看,提示MoveNext () 语句有 6 个未覆盖的 block 。它有什么问题?

最佳答案

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

引自feedback :

The issue that you are seeing is due to a bug from our end due to which we do not have complete support for the async/await pattern in code coverage as yet. The work is pending and should be something we deliver in the next major update/release. There are no clean workarounds for this issue.

关于c# - async/await 单元测试代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26373915/

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