ユニットテストには常にJasmineを使用していましたが、最近、イスタンブールを使用してコードカバレッジレポートを提供し始めました。つまり、Gistが私に伝えようとしていることの内容を取得しますが、これらのパーセンテージのそれぞれが何を表しているのか本当にわかりません(Stmts、Branches 、Funcs、Lines)。これまでのところ、グーグルはしっかりした説明/リソースを見つけることができませんでした。
質問:要旨を入手したと言ったように、誰かが適切な説明または適切な説明へのリンクを投稿できますか?
三次質問:コードの特定の部分がカバーされていないことを識別する方法はありますか?これまでのところ、このレポートを実際に理解することなく、基本的に推測しています。
-------------------|-----------|-----------|-----------|-----------|
File | % Stmts |% Branches | % Funcs | % Lines |
-------------------|-----------|-----------|-----------|-----------|
controllers/ | 88.1 | 77.78 | 78.57 | 88.1 |
dashboard.js | 88.1 | 77.78 | 78.57 | 88.1 |
-------------------|-----------|-----------|-----------|-----------|
All files | 88.1 | 77.78 | 78.57 | 88.1 |
-------------------|-----------|-----------|-----------|-----------|
カバレッジ基準は多数ありますが、主なものは次のとおりです。
各ケースの割合は、実行済みコードvs未実行コードを表します、パーセント形式の各分数に相当します(例:50%分岐、1/2)。
ファイルレポート:
'E'
は 'else path not taken'を表します。つまり、マークされたif/elseステートメントの場合、 'if'パスはテストされていますが、 'else'はテストされていません。'I'
は、 'if path not taken'を表します。これは逆のケースです: 'if'はテストされていません。xN
は、その行が実行された回数です。これはイスタンブールv0.4.0で検証されていますが、これが後続のバージョンにも適用されるかどうかはわかりませんが、そのライブラリは強固な理論的原理に基づいているため、新しいバージョンでは動作があまり変わらないはずです。
また、いくつかのカラーコードを提供します-
ピンク:対象外のステートメント。
オレンジ:対象外の機能。
黄色:枝は覆われていません。
完全なイスタンブールのドキュメントはこちら:
https://gotwarlost.github.io/istanbul/public/apidocs/index.html
コードカバレッジの詳細な理論:
https://en.wikipedia.org/wiki/Code_coverage
それが役に立てば幸い!
Istanbulを実行すると、レポート用のHTMLファイルも生成されるはずです(カバレッジフォルダーにある必要があります)。このHTMLは、ファイル/フォルダーをクリックしたときにドリルダウン情報を提供するはずです。
対象となる機能の割合は、テスト中に呼び出された機能の数を機能の総数で割って計算されます。行と文についても同じことが言えます(非常に長い文がない限り、通常は互いに近くなります)。ブランチは、if-else
ブロックのような決定ポイントを意味します。たとえば、コードに含まれるif-else
ステートメントが1つだけで、テストがif
部分のみを通過し、else
部分を通過しない場合、分岐率は50%になります。
物事がより明確になることを願っています。
前の回答に追加する
%Statementsは、12/18 * 100 = 66.67%のように、テストでカバーされるステートメントの数の割合を取ることによって計算されます。これは、テストが66.67%のみをカバーしたことを意味します。
%Branchも同じ方法で計算されます。 %Functionsと%linesについても同じです。
プロジェクトのルートディレクトリには、テストのHTML出力を含むカバレッジフォルダーがあります。それをクリックして、ブラウザで表示します。このようなものが見えるはずです
これがあなたがそれをよりよく理解するのに役立つことを願っています。