C# 100%的代码覆盖率,抱怨MoveNext()

C# 100%的代码覆盖率,抱怨MoveNext(),c#,unit-testing,code-coverage,C#,Unit Testing,Code Coverage,我正在努力实现100%的代码覆盖率。 然而,不知何故,代码覆盖率抱怨某些MoveNext()方法没有覆盖,然而,没有迭代IEnumerable的代码路径 你知道如何使用下一种方法吗?MoveNext()的位置在哪里?老实说,我是从一个中等规模的项目和一个中等规模的团队试图实现并保持100%的代码覆盖率的经验中说的,在这个团队中,代码相当好地遵循了坚实的原则,您应该忘记尝试实现100%的代码覆盖率 最佳实践表明,有充分的理由,覆盖率为70%的系统非常好,80%非常好,90%例外。听起来你已经9

我正在努力实现100%的代码覆盖率。 然而,不知何故,代码覆盖率抱怨某些MoveNext()方法没有覆盖,然而,没有迭代IEnumerable的代码路径


你知道如何使用下一种方法吗?MoveNext()的位置在哪里?

老实说,我是从一个中等规模的项目和一个中等规模的团队试图实现并保持100%的代码覆盖率的经验中说的,在这个团队中,代码相当好地遵循了坚实的原则,您应该忘记尝试实现100%的代码覆盖率

最佳实践表明,有充分的理由,覆盖率为70%的系统非常好,80%非常好,90%例外。听起来你已经90多岁了,所以你应该感到自豪,不要过分担心最后一篇文章,听上去,它甚至没有测试你的代码库本身。或者换一种方式说,您是愿意达到100%的圣杯,还是愿意花时间重构代码以使将来的维护更容易

当我尝试保持100%的覆盖率时,我是C#新手,最后编写单元测试来测试.Net framework的getter和setter——我认为我真的很聪明,达到了100%(整整一周,直到团队中有人添加了几行超复杂的代码)然后有人礼貌地指出我的一些测试是愚蠢的——我觉得自己是多么愚蠢

我意识到我的“答案”实际上并没有回答你的问题,我开始回答这个问题是作为一个评论,而不是一个答案,但当我写作时,我意识到我的评论是如此重要,以至于即使不直接回答这个问题,仅仅一个评论也不足以解释问题。我真的很欣赏任何100%覆盖率的尝试,但不要为实现这一目标而犹豫不决——“完成总比完美好”


祝你好运

对我有效的方法是排除我的解决方案的.runsettings文件中的MoveNext()方法:

        <Functions>
          <Exclude>
            <Function>.*MoveNext.*</Function>
          </Exclude>
        </Functions>

*下一步*

请参阅。

它与异步/等待代码相关-
MoveNext
是自动生成逻辑的一部分。出于兴趣,您正在使用什么代码覆盖率工具,可能它不理解async/await?请注意类名。它显然是由编译器生成的IEnumerable。我想你的代码覆盖工具不会费心去检查你写的代码是否应该被覆盖。然而,我发现,努力实现100%的代码覆盖率是毫无用处的,除了小玩具项目。在任何较大的项目中,总有一些陈述或表达是你无法涵盖的。通常情况下,这些只是对不应该发生的事情的保护
throw
s之类的东西。@Joey类名表明这是异步状态机,而不是IEnumerable。也许这两者都有,但在本例中,我们从代码中看到它不是IEnumerable。它显示异步方法的生成代码。在那个答案中被称为
Step
的也被称为MoveNext()。我认为他在使用Visual Studio内置的代码覆盖工具。在测试菜单下。但我不知道社区是否有。