我最近开始使用TDD,或者你可以说测试我的项目,在那里我发现了一些新东西(对我来说是新的东西),被称为"代码覆盖率"它显示了在测试过程中您的代码覆盖了多少。而且我知道大多数老年人都会说它不可能拥有100%的代码覆盖率或者不是很好的做法来获得100%的代码覆盖率。这件事让我想知道这个代码覆盖如何工作我的意思是他们涵盖了哪些基础的代码?请告诉我们测试的主要用法。
我附上了这个问题的代码覆盖率图像。
答案 0 :(得分:5)
实际上,100%的代码覆盖率是可能的,但取决于语言:
关于100%代码覆盖率的实用性:
即使100%的代码覆盖率也不意味着代码是完美的:
增加:
如果不需要100%的代码覆盖率(因为一切都需要时间,因此需要花钱),首先要关注代码中的高风险区域。首先跳过琐碎的方法,然后从复杂/高风险函数开始。
使用设计模式或代码结构来“帮助”单元测试也很重要:
答案 1 :(得分:4)
首先,为了理解代码覆盖的价值,您必须了解您希望用它实现的目标。代码覆盖率可帮助您确定程序代码的质量,例如:它是健壮的还是容易出错,是它有凝聚力还是有隐藏的依赖关系,是否易于改变等等。
具有高代码覆盖率的代码往往是更好的代码,但不能保证它是好的代码。这是因为代码质量很大程度上取决于您的测试用例的构建情况,例如:如果你正在测试你的预期行为,或是对于错误或破坏性的输入,对于角落案件或其他特殊情况等。 如果您的测试套件写得不好,您仍然可以实现高(或100%)代码覆盖率,但您的代码质量会很差。
其次,大多数有经验的开发人员会告诉您100%测试覆盖率的原因并不是必需的,甚至是一个不好的做法是,您需要投入100%代码覆盖率的时间更好地投入到更完整的测试套件中。使用编写得不好的测试套件比使用精心设计的测试套件更容易实现100%的代码覆盖率。
第三,因为你(几乎)从来没有一个完整的测试套件,只是因为我不知道很多人可以考虑所有可能的代码可能出错的情况,你应该迫切需要修改你的测试套装持续(不是无限)而不是解决完整代码覆盖率的错误砍伐。
我希望这段关于代码覆盖率的观点可以帮助您使它对您更有用。
答案 2 :(得分:2)
代码覆盖率很重要,越高越好,因为它表明您的单元测试是彻底的并且已经涵盖了代码区域,从而减少了错误。
您可能不会为您的应用程序达到100%的代码覆盖率,因为MSTest不提供分支,状态覆盖和测试void方法可能很困难。您看到的统计数据基于声明/功能覆盖率。
答案 3 :(得分:0)
我所发现的是代码覆盖率很重要但不必运行100%。如果您获得了大约70%的代码覆盖率,那么它也很好,如果您获得100%的代码覆盖率,那么您的代码也没有必要100%正确