【问题标题】:iOS Unit Test Coverage - Sonar Report - xccoviOS 单元测试覆盖率 - 声纳报告 - xccov
【发布时间】:2019-11-01 02:51:40
【问题描述】:

xccov 工具仅针对被覆盖的代码行生成单元测试覆盖率报告。所以如果 example.swift 文件有 20 行,其中 10 行被单元测试覆盖,那么覆盖率为 50%。

Karma(用于 Angular 2 开发)creates report 不仅适用于涵盖的代码行,还适用于语句、分支和函数。

是否可以配置 xccov,或者在 iOS 开发中是否有类似的工具可以实现这一点?谢谢!

【问题讨论】:

  • 查看this 文档页面。
  • 我们目前正在使用SonarQube's solution,但这并不能解决问题,该脚本仅针对覆盖的代码行生成报告。

标签: ios xcode unit-testing sonarqube


【解决方案1】:

Xccov 不生成任何覆盖率数据。 Xccov 可以从工具 xcodebuild 读取覆盖率报告:

  1. 要获取覆盖率数据,您应该在测试方案中选择收集覆盖率数据:

  2. 在您的 CI 脚本中,您可以添加标志 -resultBundlePath 以选择将保存覆盖数据的文件夹。

  3. 那么你可以使用xccov获取以下信息:

    • xccov view --only-targets report.xccovreport 的总体目标覆盖率
    • 按文件覆盖xccov view --files-for-target target_name report.xccovreport
    • 每个功能的覆盖率xccov view --func- tions-for-file name_or_path report.xccovreport
    • 逐行原始覆盖数据xccov view --file file_name report.xccovarchive

  1. 您可以使用--json标志通过脚本分析结果。

有关 xccov 的更多信息,您可以阅读 man xccov 或观看 WWDC 会话 What's New in Testing

因此,xccov 为您提供开箱即用的函数统计信息。如果你想要更多。例如,语句和分支的统计信息,您可以使用 SourceKit 和 xccov 数据自己创建脚本。 SourceKit 可以提供有关源代码的 AST 以及语句所在位置的信息。按位置,您可以通过 xccov 报告匹配有关覆盖范围的信息。

【讨论】:

  • 谢谢,但您的步骤无济于事。它清楚地显示了仅涵盖行的报告。你的最后一段是我需要的,但是你的陈述“你可以使用 SourceKit 和 xcciv 数据自己创建一个脚本”就像说“你创建一个应用程序编写代码”。虽然这是真的,但根本没有帮助。
猜你喜欢
  • 2016-08-04
  • 2017-10-25
  • 2016-11-18
  • 1970-01-01
  • 2017-02-11
  • 1970-01-01
  • 2013-09-26
  • 2012-07-18
  • 2013-10-14
相关资源
最近更新 更多