コードカバレッジ メトリクスの生成
コードカバレッジは、アプリケーションがどの程度テストされたかを示します。
CircleCI は、組み込まれている CircleCI 機能をオープンソース ライブラリと組み合わせて、またはパートナーのサービスを使用して、コードカバレッジ レポートのさまざまなオプションを提供しています。
CircleCI でのカバレッジの表示
コードカバレッジ レポートを直接 CircleCI にアップロードできます。 最初に、プロジェクトにカバレッジ ライブラリを追加し、CircleCI の アーティファクト ディレクトリにカバレッジ レポートを書き込むようにビルドを設定します。 コードカバレッジ レポートはビルドアーティファクトとして、参照またはダウンロード可能な場所に保存されます。 カバレッジ レポートへのアクセス方法の詳細については、 ビルドアーティファクトに関するドキュメントを参照してください。
言語別にカバレッジ ライブラリを構成する例をいくつか示します。
Ruby
SimpleCov は、よく使用される Ruby コードカバレッジ ライブラリです。 まず、simplecov
gem を Gemfile
に追加します。
gem 'simplecov', require: false, group: :test
テスト スイートの開始時に simplecov
を実行します。 SimpleCov を Rails と共に使用する場合の設定例を以下に示します。
require 'simplecov' # << SimpleCov が必要です。
SimpleCov.start 'rails' # << "Rails" プリセットを使用して SimpleCov を起動します。
ENV['RAILS_ENV'] ||= 'test'
require_relative '../config/environment'
require 'rails/test_help'
class ActiveSupport::TestCase
# すべてのテストの test/fixtures/*.yml にあるすべてのフィクスチャをアルファベット順にセットアップします。
fixtures :all
# すべてのテストで使用されるヘルパー メソッドをここに追加します...
end
次に、カバレッジ レポートをアップロードするために .circleci/config.yaml
を設定します。
詳細は、 simplecov README を参照してください。
Python
Coverage.py は、Python でコードカバレッジレポートを生成する際によく使用されるライブラリです。 最初に、以下のように Coverage.py をインストールします。
pip install coverage
# これまでは、たとえば以下のように Python プロジェクトを実行していました。
python my_program.py arg1 arg2
# ここでは、コマンドにプレフィックス "coverage" を付けます。
coverage run my_program.py arg1 arg2
この 例では、以下のコマンドを使用してカバレッジレポートを生成できます。
coverage run -m pytest
coverage report
coverage html # ブラウザーで htmlcov/index.html を開きます。
生成されたファイルは htmlcov/
下にあり、コンフィグの store_artifacts
ステップでアップロードできます。
Java
JaCoCo は、Java コードカバレッジによく使用されるライブラリです。 ビルドシステムの一部に JUnit と JaCoCo を含む pom.xml の例を以下に示します。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.foo</groupId>
<artifactId>DemoProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>DemoProject</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.3</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<!-- Sets the path to the file which contains the execution data. -->
<dataFile>target/jacoco.exec</dataFile>
<!-- Sets the output directory for the code coverage report. -->
<outputDirectory>target/my-reports</outputDirectory>
</configuration>
</execution>
</executions>
<configuration>
<systemPropertyVariables>
<jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</project>
mvn test
を実行するとコードカバレッジレポート (exec
) ファイルが生成され、他の多くのカバレッジツールと同様に、このファイルが html
ページにも変換されます。 上記の Pom ファイルは target
ディレクトリに書き込みを行い、これを CircleCI config.yml
ファイルでアーティファクトとして保存できます。
上記の例に対応する最小の CI 設定は以下のとおりです。
JavaScript
Istanbul は、JavaScript プロジェクトでコードカバレッジレポートの生成によく使用されるライブラリです。 人気のテスト ツールである Jest でも、Istanbul を使用してレポートを生成します。 以下のコード例を参照してください。
PHP
PHPUnit は、よく使用される PHP のテストフレームワークです。 PHP 5.6 より前のバージョンを使用している場合は、コードカバレッジ レポートを生成するには PHP Xdebug をインストールする必要があります。 PHP 5.6以降のバージョンでは、phpdbgというツールにアクセスできます。 phpdbg -qrr vendor/bin/phpunit --coverage-html build/coverage-report
コマンドでレポートを生成できます。
以下に示した基本の .circleci/config.yml
では、コンフィグの最後にある store_artifacts
ステップでカバレッジレポートをアップロードしています。
Golang
Go には、コードカバレッジレポートを生成する機能が組み込まれています。 レポートを生成するには、-coverprofile=c.out
フラグを追加します。 これでカバレッジレポートが生成され、go tool
を使用して html に変換できます。
go test -cover -coverprofile=c.out
go tool cover -html=c.out -o coverage.html
.circleci/config.yml
の例は以下のとおりです。
version: 2.1
jobs:
build:
docker:
- image: cimg/go:1.16
auth:
username: mydockerhub-user
password: $DOCKERHUB_PASSWORD # コンテキスト/プロジェクト UI 環境変数を参照します。
steps:
- checkout
- run: go build
- run:
name: "Create a temp directory for artifacts"
command: |
mkdir -p /tmp/artifacts
- run:
command: |
go test -coverprofile=c.out
go tool cover -html=c.out -o coverage.html
mv coverage.html /tmp/artifacts
- store_artifacts:
path: /tmp/artifacts
コードカバレッジ サービスの使用
Codecov
Codecov には、カバレッジレポートのアップロードを簡単に行うための Orb があります。
注: **Codecov Orb は、パートナーが作成した Orb です。 使用するには、お客様ご自身または組織の管理者が、未承認 Orb の使用をオプトインする必要があります。 この設定は、CircleCI Web アプリの **Organization Settings > Security で行えます。
version: 2.1
orbs:
codecov: codecov/codecov@1.0.2
jobs:
build:
steps:
- codecov/upload:
file:
Codecov の Orb の詳細については、 CircleCI ブログへの寄稿記事を参照してください。
Coveralls
Coveralls のユーザーは、 カバレッジ統計の設定ガイドを参照してください。CircleCI の 環境変数に COVERALLS_REPO_TOKEN
を追加する必要があります。
Coveralls は、同時実行ジョブのカバレッジ統計を自動的にマージします。
ドキュメントの改善にご協力ください
このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。
- このページの編集をご提案ください (最初に「コントリビューションガイド」をご覧ください)。
- ドキュメントの問題点を報告する、またはフィードバックやコメントを送信するには、GitHub で issue を作成してください。
- CircleCI は、ユーザーの皆様の弊社プラットフォームにおけるエクスペリエンスを向上させる方法を常に模索しています。 フィードバックをお寄せいただける場合は、リサーチコミュニティにご参加ください。
サポートが必要ですか
CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。
または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。
CircleCI Documentation by CircleCI is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.