Jestでcoverageを計測する方法
仕事でNode.js+Jestを使った時に、調べた内容のメモです。
前提
npm testが実施可能
実行環境
テスト実行方法
node_modulesが存在する階層で以下のコマンドを実行します。
npm test -- --coverage
testの後に存在する--に違和感を覚えるかもしれませんが、jestとしてではなくnpmとしてテストを実行する際の作法のようです。
実行結果
標準出力の結果で確認する
- 一通り
npm testが実施された後にカバレッジの解析結果が表示されます。
カバレッジの種類
Stmts(Statement coverage):命令網羅率:C0
- 全ての実行可能命令のうち、テストで実行された命令の割合
Branch(Branch coverage):分岐網羅率:C1
- 全ての判定条件のうち、テストで実行された判定条件の割合の割合
Funcs(Function coverage):関数カバレッジ
- プログラム内の各関数がテストで最低1回呼び出されたかの網羅率
Lines(Lines):行カバレッジ
- ソースファイルの各実行可能行がテストで実行されたかの網羅率
コード上でカバレッジを確認する(html形式でのコード表示)
node_modulesディレクトリと同じ階層にcoverageディレクトリが生成されます。coverageの配下にある、coverage\lcov-report\index.htmlを開くと、ブラウザ上にコード、全コードに対するテスト実施状況が表示されます。- この結果を確認することで、
coverageの有無を行単位で確認することができます。
- この結果を確認することで、
- さらに、ファイル名部分のリンクをクリックすると、以下が表示される
- 単体テストが出来ていない行は赤で表示されたり、マークがついたりして目立つようになっているので、テスト拡充の際の目安になる。(coverageの種類ごとに強調方法が変わります。)