如何实际完成单元测试覆盖?

时间:2015-01-13 10:03:48

标签: unit-testing code-coverage sonarqube

我知道覆盖测试的理论,但实际上,CC工具如何完成覆盖测量?我的意思是,它是否检查每种方法是否都有一个测试它的单元测试?线路覆盖是否涉及单元测试?我所能找到的只是覆盖标准等,但我根本不明白这些工具(例如Sonar)如何实际测量单位测试覆盖率。

1 个答案:

答案 0 :(得分:4)

覆盖率是在自动化测试运行时执行代码行/块/弧的度量。

代码覆盖背后的基本思想很简单。在产品开发过程中,会创建并运行大量测试用例以发现系统中的错误。代码覆盖率分析监视产品代码的哪些部分由测试用例集合执行。如果在测试过程中存在从未运行的产品代码段,则产品尚未经过全面测试。

因此,如果你有90%的代码覆盖率,那么有10%的代码不在测试范围内。我知道你可能会认为90%的代码都被覆盖了,但你必须从不同的角度来看。什么阻止你获得100%的代码覆盖率???请记住,拥有“100%代码覆盖率”并不意味着所有内容都经过了全面测试 - 虽然这意味着每行代码都经过测试,但这并不意味着它们会在各种可能情况下进行测试。

使用Sonar,您可以监控应用程序的整体覆盖范围,并根据需要发送百分比度量。要通过项目的集成测试获得代码覆盖率,您只需按照以下5个步骤操作:

  1. 将JaCoCo代理附加并配置到JVM,您将使用该JVM运行集成测试。

  2. 在此JVM中运行自动或手动集成测试。在执行结束时,JaCoCo会将代码覆盖率报告转储到您在步骤1中设置的目的地。

  3. 配置Sonar以重用此JaCoCo报告。在项目属性文件中(或直接在命令行中),将sonar.jacoco.itReportPath属性与JaCoCo IT覆盖率报告的路径一起添加为值。您可以下载一个示例并查看projects / code-coverage / it目录:对于每个启动器,您将找到一个示例。

  4. 运行分析,使用JaCoCo报告提供的信息为Sonar提供信息。

  5. 在Sonar Web界面上浏览结果。在声纳仪表板中,您可以看到覆盖率最低的类,并相应地规划您的策略。