仕事で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の種類ごとに強調方法が変わります。)