タイムカプセルに入れるものは下手に考えない方がいいと思う
先日家の隅に2度の引っ越しをそのままの姿で移動してきたダンボールを整理しました。
「2004/--/--」と書いてあったものが入っていたので、10年間手つかずのダンボール、もうタイムカプセルです。。。
整理した結果9割はいらないものでした、10年前の私はバカですね、今もバカですが。
さて、今回は「testm」以外にテストを実行してくれるものはないかと探して見つけた
「karma」というものを紹介します。
はじめに
説明にあたり以下がインストール済みである事とします。
Node.js
npm
karmaはあくまで実行環境なので、テスト処理を行うライブラリが必要になります、
今回はJasmineを使用していきます。
なお今回詳しいテスト内容等は割合させていただきます。
インストール
karmaのインストール
下記を実行してkarmaをインストールします。
npm install -g karma
カバレッジ用のプラグインをインストール
下記を作業フォルダ下で実行して、カバレッジ計測に必要なモジュールをインストールします。
npm install karma-coverage --save-dev
Jasmine用のプラグインをインストール
今回はJasmineを使用して説明するので、下記を作業フォルダ下で実行してください。
npm install karma-jasmine --save-dev
※他のフレームワークを使用する場合は、フレームワークに合ったプラグインをインストールしてください
ブラウザ用のプラグインをインストール
下記を作業フォルダ下で実行して、各ブラウザでテストが行えるようにします。
npm install karma-chrome-launcher --save-dev npm install karma-firefox-launcher --save-dev npm install karma-ie-launcher --save-dev
設定ファイルを作成
karmaの設定ファイルを作成します、作業フォルダに移動後以下を入力してください。
karma init
すると以下のような質問が表示されますが、後で変更するのでEnterで先に進んでください。
Which testing framework do you want to use ? Press tab to list possible options. Enter to move to the next question. > jasmine Do you want to use Require.js ? This will add Require.js plugin. Press tab to list possible options. Enter to move to the next question. > no Do you want to capture any browsers automatically ? Press tab to list possible options. Enter empty string to move to the next quest ion. > Chrome > What is the location of your source and test files ? You can use glob patterns, eg. "js/*.js" or "test/**/*Spec.js". Enter empty string to move to the next question. > Should any of the files included by the previous patterns be excluded ? You can use glob patterns, eg. "**/*.swp". Enter empty string to move to the next question. > Do you want Karma to watch all the files and run the tests on change ? Press tab to list possible options. > yes Config file generated at "C:\test\karma.conf.js".
設定ファイルの編集
作業ファオルダに「karma.conf.js」が作成されたと思います。
今回はjasmineでChromeとIEに出力し、カバレッジを取得する設定を行ってみます。
// Karma configuration // Generated on Tue May 27 2014 09:51:03 GMT+0900 (東京 (標準時)) module.exports = function(config) { config.set({ //使用するフレームワークを指定する // frameworks to use // available frameworks: https://npmjs.org/browse/keyword/karma-adapter frameworks: ['jasmine'], //読み込むJSファイルを指定する // list of files / patterns to load in the browser files: [ 'web/utils.js', 'test/utils/*.js' ], //カバレッジを使用する場合、見たいJSファイルを指定します // preprocess matching files before serving them to the browser // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { 'web/utils.js':'coverage' }, //カバレッジを使用する場合、'coverage'を追記してください // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: ['progress', 'coverage'], //動作させたいブラウザを指定する // start these browsers // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher browsers: ['Chrome','IE'], }); };
動かしてみる
作業フォルダで以下を入力することで起動させることができます
C:\Test>karma start INFO [karma]: Karma v0.12.16 server started at http://localhost:9876/ INFO [launcher]: Starting browser Chrome INFO [launcher]: Starting browser IE INFO [IE 11.0.0 (Windows 7)]: Connected on socket sWYstSNjyRFaQcKFbIAy with id 5 0780208 INFO [Chrome 35.0.1916 (Windows 7)]: Connected on socket orTXxpfOyGg1AqUwbIAx wi th id 52055382 IE 11.0.0 (Windows 7): Executed 119 of 119 SUCCESS (0.06 secs / 0.04 secs) Chrome 35.0.1916 (Windows 7): Executed 119 of 119 SUCCESS (0.087 secs / 0.049 se cs) TOTAL: 238 SUCCESS
エラーが発生しなければ、設定しておいたブラウザが立ち上がり実行結果が表示されます。
ガバレッジを確認する
ガバレッジを出力する設定をしている場合、「coverage」下に保存されます。
「index.html」を開くと、以下のようにカバレッジが出力されるはずです。
終了する
終了する場合は「Ctrl+c」で終わらせます。
バッチ ジョブを終了しますか (Y/N)? y
最後に
簡単なプログラムなら問題なく動かせました。
でも少し複雑なプログラムになると、動いてくれないことがあり、
もっとしっかり調べてみる必要がありそうです。。。