在一个项目中,有些组件具有测试覆盖率,而另一些组件则不具有测试覆盖率,在这个项目中,SonarQube似乎只根据覆盖范围的组件来计算代码覆盖率。我希望没有测试覆盖的组件中的代码行被分类为0%的代码覆盖率(至少在计算中是这样)。
示例:
SonarQube覆盖率(项目X):100%
如何计算总覆盖范围?如果这是故意的,为什么?
发布于 2016-06-29 11:24:32
覆盖率是根据测试执行期间覆盖的行计算的。如果没有测试,则跳过测试执行,根本不执行任何代码,因此不会产生覆盖数据。因此,N/A与0%是有差别的。
如果将空测试添加到模块中,则将使用该测试进行计算并生成0%的覆盖率。
编辑:假设您正在使用Jacoco进行覆盖。Jacoco将覆盖信息写入文件(即jacoco.exec)。对于单元测试(maven surefire),将该文件写入模块的目标目录,并使用该文件计算该模块的覆盖率。没有文件,没有覆盖。
当我运行集成测试时,我想确定测试涵盖了整个项目代码的哪些部分。我的集成测试通常也位于单独的模块中。因此,在这种情况下,每个模块的覆盖率没有多大意义,因为测试(1个模块)和产品(所有其他模块)都是稀疏的。因此,我运行集成测试,并将覆盖信息写入根模块(项目)的目标文件夹中的单个jacoco-it.exec文件中。因此,计算了整个代码库的覆盖率,包括覆盖率为0%的模块(关于如何设置它:基于Jacoco和Sonar的多模块集成测试覆盖)
对于这种方法,您可以忽略的是,单个模块的代码的哪些部分被该模块的测试所覆盖。因为一个模块的部分可以被另一个模块的测试覆盖,也就是说,一个模块的覆盖率可以是30%,而没有在该模块中进行任何测试。
所以你可以选择:
https://stackoverflow.com/questions/38093013
复制相似问题