Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

Jestでcoverageを計測する方法

f:id:overworker:20200916000438p:plain:h150


仕事でNode.js+Jestを使った時に、調べた内容のメモです。

前提

  • npm testが実施可能

実行環境

テスト実行方法

  • node_modulesが存在する階層で以下のコマンドを実行します。
npm test -- --coverage
  • testの後に存在する--に違和感を覚えるかもしれませんが、jestとしてではなくnpmとしてテストを実行する際の作法のようです。
f:id:overworker:20210307230122p:plain:w500

実行結果

標準出力の結果で確認する

  • 一通りnpm testが実施された後にカバレッジの解析結果が表示されます。 
f:id:overworker:20210307230824p:plain:w500

カバレッジの種類

Stmts(Statement coverage):命令網羅率:C0

  • 全ての実行可能命令のうち、テストで実行された命令の割合

Branch(Branch coverage):分岐網羅率:C1

  • 全ての判定条件のうち、テストで実行された判定条件の割合の割合

Funcs(Function coverage):関数カバレッジ

  • プログラム内の各関数がテストで最低1回呼び出されたかの網羅率

Lines(Lines):行カバレッジ

  • ソースファイルの各実行可能行がテストで実行されたかの網羅率

コード上でカバレッジを確認する(html形式でのコード表示)

f:id:overworker:20210307233045p:plain


  • node_modulesディレクトリと同じ階層にcoverageディレクトリが生成されます。
  • coverageの配下にある、coverage\lcov-report\index.htmlを開くと、ブラウザ上にコード、全コードに対するテスト実施状況が表示されます。
    • この結果を確認することで、coverageの有無を行単位で確認することができます。
f:id:overworker:20210307232814p:plain:w500
  • さらに、ファイル名部分のリンクをクリックすると、以下が表示される
f:id:overworker:20210307233045p:plain:w500
  • 単体テストが出来ていない行は赤で表示されたり、マークがついたりして目立つようになっているので、テスト拡充の際の目安になる。(coverageの種類ごとに強調方法が変わります。)

その他の記事へ