開発者ブログ
HTML5資料室 » JSCover

JSCover

Last modified by tom on 2014/05/27, 09:04

JavaScriptのコードカバレッジを測定するツールです。
ここではJSCoverに関する情報を載せてゆきます。

JSCover概要

  • 計測したいJavaScriptコードにインストルメント処理を行います。
    • インストルメント処理:コードの各行ごとに「この行を通過した」ことを記録するコードが挿入されます。
  • 処理を行ったJavaScriptコードを実行した結果をレポートとして保管できます。またレポートにアンロード/テストされていないJavaScriptコードを保存することが可能です。

カバレッジ測定&レポート保管までの手順

① ダウンロード

まずはココからダウンロードしましょう。
このページではver1.0.7で作業を行っております。
ダウンロードしたら適当な場所に解凍します。ここではC:\JSCover-1.0.7に解凍したと想定します。

② サーバの起動

コマンドプロンプトを起動し、解凍したフォルダに移動します(ここではC:\JSCover-1.0.7)。
テスト対象コードの場所は、
C:\workspace\test_project\src\main\webapp\test
にあると想定します。
下記コマンドを打ちます。
java -Dfile.encoding=UTF-8 -jar target/dist/JSCover-all.jar
-ws --document-root=C:\workspace\test_project\src\main\webapp
--report-dir=target --port=81

 --document-root

  • テストコードとテストコードが読み込むすべてのファイルを含むディレクトリを指定します。

 --report-dir

  • 出力先ディレクトリを指定します。

 --port

  • ポートの指定。デフォルトは8080。今回は81(任意)を指定します。

コマンドが通らない:
読み込むファイルがUTF-8にencodingされていますか。
読み込むファイル全てを読み込めるディレクトリを--document-rootで指定していますか。
--portを指定していますか。指定していない状態でTomcatが起動しているとポートが被ります。

カバレッジを計測しないディレクトリの指定

上記で取得されるカバレッジではh5やjqueryのように、測定する必要のないファイルも入っています。

 --no-instrument=URL

  • 測定しないディレクトリを指定すると除外できます。
java -Dfile.encoding=UTF-8 -jar target/dist/JSCover-all.jar -ws --document-root=C:\workspace\test_project\src\main\webapp --report-dir=target --port=81 --no-instrument=res/lib --no-instrument=test

上記コマンドでは、webapp直下のres/libとtestディレクトリを除外している。

③ カバレッジの取得

http://localhost:81/jscoverage.html?test/unit/common/data-source-test.html
上記URLに接続します。リクエストパラメータは--document-rootからテストコードへの相対パスです。
Summaryタブからカバレッジを確認できます。

④ レポートの保管、変換

レポートの保管
StoreタブのStore Reportボタンを押すことで保管できます。
保管先は-report-dirで指定したディレクトリです。

テストコードの最後に以下を追記すると、自動でレポートを保管します。
if (window.jscoverage_report) {
  jscoverage_report();
}

レポートの変換
CI(Jenkins)で読める形式のxmlを出力する方法は、
レポートを保管後、下記コマンドを実行します。
java -cp target/dist/JSCover-all.jar jscover.report.Main --format=COBERTURAXML target C:\workspace\test_project\src\main\webapp\test

⑤ サーバの停止

コマンドプロンプトを閉じます。
または「Ctrl+C」でも可能です。


Copyright (C) 2012-2017 NS Solutions Corporation, All Rights Reserved.