JaCoCo
TeamCity 支持 JaCoCo,这是一种 Java 代码覆盖工具,让您可以衡量一组广泛的覆盖指标和代码复杂性。
JaCoCo 可用于以下构建运行程序: Ant、IntelliJ IDEA Project、Gradle 和 Maven。
启用 JaCoco 覆盖率
TeamCity 支持 Java 代理覆盖模式,让您可以在不修改构建脚本或二进制文件的情况下收集覆盖率。 无需额外的构建步骤 — 只需在运行测试的构建步骤中选择 JaCoCo 覆盖率:
在 代码覆盖率 部分,从 选择覆盖率运行器 下拉菜单中选择 JaCoCo 作为覆盖工具。
设置覆盖率选项 — 请参考下述的可用选项描述。
选项 | 描述 | 示例 |
---|---|---|
类文件目录或jar包 | 以 |
|
要进行仪器化的类 | 以 |
|
代码覆盖率结果可以在概览选项卡的构建结果页面上查看;详细报告显示在专用的代码覆盖率选项卡上。
将 JaCoCo 覆盖率数据导入到 TeamCity
TeamCity 可以解析 JaCoCo 覆盖数据,并使用以下格式的 服务消息 生成报告:
TeamCity 将使用默认的 JaCoCo 版本来解析导入的数据。 请注意,如果导入的覆盖率由不同的次版本(X.X.X 中的第二个数字)生成,TeamCity 将无法处理其类文件并收集覆盖率。 为了防止这种情况,确保在 管理 | 工具 | JaCoCo 覆盖率 中选择的默认版本与您要导入的覆盖率的工具版本相对应。
或者,您也可以直接在服务消息体中指定所需的工具版本: ##teamcity[jacocoReport dataPath='coverage_data/jacoco.exec' includes='*' classpath='+:build/classes/java/main/**' toolVersion='X.X.X']
。 确保指定的版本已在 TeamCity 服务器上安装。
特性 | 描述 | 默认值 | 示例 |
---|---|---|---|
dataPath | 相对于检出目录的空格分隔的路径集,用于读取 jacoco 数据文件 |
| |
包含 | 以空格分隔的类名包含模式集 |
|
|
排除 | 由空格分隔的类名排除模式集合 |
| |
源 | 相对于检出目录的,由空格分隔的路径集,用于读取来源。 默认无需列出。 |
|
|
classpath | 空格分隔的路径模式集,以 |
|
|
reportDir | 存储临时文件的目录路径。 报告将在此目录下以覆盖率 | Agent 的临时目录下的一个随机目录 | jacocoReport |
一个完整服务消息的示例: