当我在Visual Studio 2012中分析代码覆盖率时,任何异步方法中的await行都显示为未覆盖,尽管它们显然正在执行(因为我的测试通过了)。代码覆盖报告显示未覆盖的方法是
有没有办法修复异步方法的代码覆盖报告?
注意: 我刚刚使用NCover运行了覆盖率,并且使用该工具的覆盖率数字更加合理。暂时作为解决方法,我将切换到该工具。
MoveNext
,这不在我的代码中(可能是由编译器生成的)。有没有办法修复异步方法的代码覆盖报告?
注意: 我刚刚使用NCover运行了覆盖率,并且使用该工具的覆盖率数字更加合理。暂时作为解决方法,我将切换到该工具。
await
点时,操作已经完成了吗? - Stephen Clearyawait
中包含了几个不同的执行路径。因此,请考虑您方法的所有语义:如果等待的任务没有完成,它应该完成吗?如果等待的任务已经完成,它应该同步完成吗?它应该传播异常吗?一旦您开始涵盖所有实际语义,您可能会发现代码覆盖率不是问题。在我的AsyncEx库中,有一些地方是无法进行代码覆盖的,所以我永远不会达到100%。这并不会让我夜不能寐。 :) - Stephen Cleary