process.on("exit") で書き込み処理が実行されるので、テストにおいて process.removeListeners() でハンドラを削除してしまっていると出力されない。 ハンドラを削除する必要がある場合は、process.listeners("exit") で事前にハンドラを退避し、事後に設定し直すことで対応できる。下記は istanbul + mocha での場合。 var exitHandlers; before(function () { exitHandlers = process.listeners("exit"); }); after(function () { exitHandlers.forEach(function (handler) { process.on("exit", handler); }); });
サンプル https://github.com/iwata-n/nodejs_coverage node.js+expressで作ってるプロジェクトのテストでカバレッジを取りたかったので調べてみた結果をまとめておく。 gulp ビルドツールとしてgulpを使う。gruntも有るっぽいけどもgulpを使う。 カバレッジ取得ツール istanbulを使う。istanbulをgulpのプラグインとして用意してくれている人がいるので感謝 設定 gulp-istanbulのREADMEに従ってgulpfile.jsを用意する。 express-generatorが出してきたままなコードになっている。 var gulp = require('gulp'); var istanbul = require('gulp-istanbul'); var mocha = require('gulp-mocha'
gulp-mochaとistanbulを使ってローカルでコンソールにテスト結果を表示しつつ、カバレッジも取るといったことはすごく簡単にできたが、JenkinsでJUnit形式で出力されたテスト結果ファイルをパースして結果を表示しようと思ったら困ったのでメモ。 mochaの標準のRepoterでは標準出力にしか出力してくれなくて、ファイルに出せなかった。なので npm install xunit-file を追加して、 gulp-mochaのオプションを mocha({repoter: "xunit-file"}) のように指定することで xunit.xml に出力される。 (gulpで標準出力をそのままファイルに落とす方法無いの??) var gulp = require("gulp"), mocha = require("gulp-mocha"), istanbul = require(
$node -v v0.12.0 $npm list ... ..mocha@2.3.4 ..gulp@3.9.0 ..gulp-istanbul@0.10.3 ..istanbul@0.4.2 ..isparta@4.0.0 import gulp from 'gulp' import mocha from 'gulp-mocha' import istanbul from 'gulp-istanbul' const SOURCES = 'src/**/*.js' const TEST_FILES = 'test/**/*.js' gulp.task('pre-test-coverage', () => { return gulp.src(SOURCES) .pipe(istanbul( { instrumenter: require('isparta').Instrumenter })
前提環境 以下のようなフォルダ構成になっている環境を前提とする。 Windows 7環境で確認。 +node_modules +src | +―ソースファイル.js +test +―テストコード.js Windows上でもmocha+istanbulでコードカバレッジを取りたい。 自分向けのメモ書き。 Node.js + Mocha のUT環境で、コードカバレッジを取りたい!で 検索すると、 npm install mocha istanbul したうえで、 istanbul cover _mocha で出来る、ってのがヒットするが、これはLinux環境の話。 Windows環境での実行方法は以下になる。 npm install mocha istanbul は同様。この状態で、 node node_modules\istanbul\lib\cli.js cover node_module
この記事は CureApp Advent Calendar 23日目の記事です。 今日はフロントエンドのカバレッジの話です。 テストカバレッジとは テストカバレッジとは、テストの際にどれくらいの割合のコードがテストされているか・されていないかを集計した情報のことです。 原理としては、JavaScript の場合は、テスト実行前にスクリプトに変換をかけて、各行に、 その行を実行したことを記録するコード を追加し(この変換のことを Instrumentation と言います)、その状態でテストを走らせます。全テストケース終了後に、各行から出力された行の実行情報を集計してまとめることで、カバレッジレポートを作成しています。 テストカバレッジの意味 テストカバレッジが出せるようになると、行ごとにテストされた・されてないという情報を知ることができ、全体で何%がテストされたという情報をトラッキングする
はじめに codecov で typescript のカバレッジを報告しようとしたら、 no-reports-generated error=Error となってグラフが表示されなかった話です。 厳密に言うと、ソースコードは typescript で書いているものの、テストはトランスパイルされた javascript に対して行っている状況です。typescript でテストを書いたらそもそもこの状況は起こらないかもしれません。 codecov とは テストするときによく用いられる指標として、カバレッジ(coverage)ってありますよね。CI の過程でこの工程が手動というのはやはり良くないので、カバレッジを自動で計算して github の README にペタッと貼っておいてくれるというのは、エンジニアの自然な欲求なわけです。 そのうち、codecov がカバーしてくれるのは、"gith
Advent Calendarを通じて、公式ページの各種情報を参考に文章化したことと他の方々の投稿を読み進めることによって、AngularJSの基本的なところを大分理解できてきました。改めて、テストを通して開発できるAngularの良いところやUJSに沿った形の仕組みを構築でき、無理なくHTMLページをリッチにできる仕組みであることを感じてきています。 当初から、Angularのテストを手軽に行えるところが良いという理由を散々述べてきました。 今回、さらに、テストについて踏み込んだ記事として、若干Angularから離れますが、コードカバレッジの計測方法を取りまとめます。 Angularのようにテストを書き易いフレームワークを導入したとして、製造フェーズをテストファーストにして、テストコードを書いてプロダクトの品質をある程度担保できたとしても、結局、テストコードを書くのは人です。場合によって
JSのテストカバレッジの生成ツールとして、istanbulというのがあるけれど それをGruntタスクに取り込むための方法。 具体的には、mochaを使って、grunt-istanbulを使えるようにする流れ。 例は https://github.com/hiroosak/grunt-istanbul-example に記載してます。 処理の流れ カバレッジを出力するには アプリコードをカバレッジ用コードに変換する カバレッジ用のコードに対してテストを実行する カバレッジの結果を保存する カバレッジレポートを出力する それぞれで、gruntの別タスクで処理が行われる。 instrumentタスク mochaTest タスク storeCoverage タスク makeReport タスク instrument タスク カバレッジの生成タスクの名前は instrument。 設定の仕方は以下
istanbul: A Javascript code coverage tool written in JS Yet another code coverage tool for Javascript, with the following features: All-javascript instrumentation library that tracks statement, branch, and function coverage and reverse-engineers line coverage with 100% fidelity. Module loader hooks to instrument code on the fly Command line tools to run node unit tests "with coverage turned on" an
単体テストの件数や可否ももちろんですが、コードのカバー率も可視化されることで、品質向上の1つの指標にもなります。 Node.jsで開発しているプロジェクトについて、こういったデータをgruntタスクで簡単に生成できるようにしましょう。 仕組みとして使うものは以下のとおりです。 grunt: JSタスクランナー mocha: JSテストフレームワーク chai: BDD/TDDアサーションライブラリ sinon: Spy,Stub,Mockライブラリ istanbul: コードカバレッジ計測ツール gruntは既に導入済みで、活用している前提とします。 JSのテストはJasmineが有名ですが、自由度の高いmocha+chai+sinonが個人的にはお気に入りなのでこちらを使います。 コードカバレッジ計測はいくつかの選択肢がありますが、メソッドや行、分岐等を計測できるistanbulを使いま
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く