rubyを使ったアプリケーションのテストコードのカバレッジ測定にはSimpleCov
を使うことが多いと思いますが、CircleCIのArtifacts
を使うと簡単にCircleCIの管理画面上でSimpleCov
の結果を確認できたので、そのへんの手順をメモしておきます📝
Codecovを使った方がPRにコメントしれくれたりと色々便利な面もあるかもですが、お手軽にSimpleCovを使ってプロジェクトのカバレッジを測定できるようになるのはいいのかなと✨
SimpleCovでカバレッジを測定する
今回はRails、Rspecの環境で有効化する手順を記載します。
まずはGemfile
のgroup :test
にsimplecov
を追記してbundle install
します。
group :test do gem 'simplecov', require: false end
そしてspec_helperを下記のような記述を追加します。※SimpleCovの設定周りは公式のドキュメントを参考に任意の値に変更してください。
SimpleCov.start do # カバレッジ測定を有効化 enable_coverage :branch # Branch coverageを有効化 add_filter '/spec/' # spec配下は測定対象外 add_filter do |source_file| source_file.lines.count < 5 # 5行未満のファイルは対象外 end # model、controllerのファイルはgroupとして見やすくする add_group 'Models', 'app/models' く add_group 'Controllers', 'app/controllers' end
この状態でbundle exec rspec
でテストを実行するとcoverage
配下に結果が格納されるようになります。
$ cd coverage $ tree . |____index.html |____.last_run.json |____.resultset.json |____assets | |____0.12.2 | | |____images | | | |____ui-icons_cd0a0a_256x240.png | | | |____ui-icons_888888_256x240.png | | | |____ui-bg_glass_75_dadada_1x400.png | | | |____ui-icons_2e83ff_256x240.png | | | |____ui-bg_flat_75_ffffff_40x100.png | | | |____ui-bg_glass_75_e6e6e6_1x400.png | | | |____ui-bg_glass_65_ffffff_1x400.png | | | |____ui-bg_glass_95_fef1ec_1x400.png | | | |____ui-icons_222222_256x240.png | | | |____ui-bg_highlight-soft_75_cccccc_1x100.png | | | |____ui-bg_glass_55_fbf9ee_1x400.png | | | |____ui-icons_454545_256x240.png | | | |____ui-bg_flat_0_aaaaaa_40x100.png | | |____application.css | | |____loading.gif | | |____colorbox | | | |____border.png | | | |____loading.gif | | | |____controls.png | | | |____loading_background.png | | |____favicon_red.png | | |____favicon_green.png | | |____favicon_yellow.png | | |____DataTables-1.10.20 | | | |____images | | | | |____sort_asc_disabled.png | | | | |____sort_both.png | | | | |____sort_desc_disabled.png | | | | |____sort_desc.png | | | | |____sort_asc.png | | |____magnify.png | | |____application.js |____.resultset.json.lock
index.html
をブラウザで開くとカバレッジの測定結果を確認できます✨
CircleCIのArtifactsでSimpleCovの結果を格納する
Artifactsとは
アーティファクトには、ジョブが完了した後もデータが維持され、ビルドプロセス出力の長期ストレージとして使用できます。 アーティファクトは Amazon S3 に保存され、プライベートプロジェクト用の CircleCI アカウントを使用して保護されます。 https://circleci.com/docs/ja/2.0/artifacts/
Job実行時に生成されたファイル等をCircleCIが管理するS3上にアップロードする機能のようです👀
publicリポジトリの場合はArtifactsで公開したファイルが未ログインでも見れる状態になっているようなので注意してください。
👇詳しくはこちら
artifactsを使って測定結果をアップロードして確認する
CircleCIのconfigファイルでstore_artifacts
を使 うことでアップロードすることができます。
設定ファイルは省略していますが下記のような感じでrspecを実行したあとにcommands
で定義したstore_coverage_atifacts
を実行してcovarage
配下のファイルをArtifacts
にアップロードしています。
commands: store_coverage_atifacts: steps: - store_artifacts: path: coverage jobs: ruby_test: steps: - run: name: run tests command: bundle exec rspec spec/ - store_coverage_atifacts
これでCircleCIの画面上からSimpleCov
で測定してカバレッジを参照できるようになりました🎉