JSの単体テストにJsTestDriverがおすすめ
JSで単体テストしたい人限定の話ですが、JsTestDriverが結構良かったので紹介します。
基本的には以下の内容のまとめです。
0-9, JsTestDriverを使うときの注意点
http://0-9.tumblr.com/post/15574052397/jstestdriver
0-9, 最近のJS系のツールを触ってみたまとめ
http://0-9.tumblr.com/post/15398953814/javascript-tools
・JsTestDriverとは何か?
超簡単に言うとSelenium CoreのJS実装とQUnitを合わせたものです。
実際Selenium ver2はJsTestDriverが使ってるWebDriverと言うAPIを使っています。
(WebDriverがブラウザを外部から動かす共通仕様で、Selenium ver2とJsTestDriverはそれを使ってる状態)
・使った感想は?
ブラウザ上で動作するJSの単体テスト環境としてはかなり快適です。
普通にブラウザ起動してリロードしながらのテストでもいいですが、
複数ブラウザで同時にテスト走らせて結果をまとめて表示させる環境としてはかなりいいです。
・使い方は?
多分以下でOK(わたしはWebStorm経由で使ってるのでこの手順は試せてないです)
jarを落とす。
http://code.google.com/p/js-test-driver/downloads/detail?name=JsTestDriver-1.3.3d.jar&can=2&q=
設定ファイル書く。
http://code.google.com/p/js-test-driver/wiki/ConfigurationFile
実行する
java -jar JsTestDriver.jar —port 9876 —config test/JsTestDriver.conf
ブラウザで表示する
http://localhost:9876/capture
// テストコードや対象コードはtest/JsTestDriver.conf内で指定する
・ドキュメントは?
本家は以下が全部。内部ページの左側リンクには全ページ含まれていないので注意(AsyncTestCase、Assertionsとかが無い)
http://code.google.com/p/js-test-driver/w/list?can=1&q=
以下の内容があれば行けると思います。
GettingStarted
http://code.google.com/p/js-test-driver/wiki/GettingStarted
ConfigurationFile
http://code.google.com/p/js-test-driver/wiki/ConfigurationFile
CommandLineFlags
http://code.google.com/p/js-test-driver/wiki/CommandLineFlags
Assertions
http://code.google.com/p/js-test-driver/wiki/Assertions
TestCase
http://code.google.com/p/js-test-driver/wiki/TestCase
AsyncTestCase
http://code.google.com/p/js-test-driver/wiki/AsyncTestCase
HtmlDoc
http://code.google.com/p/js-test-driver/wiki/HtmlDoc
ちょうど3日前に以下の内容も公開されたのでどうぞ。
This is Stuff: JavaScript Testing with JSTestDriver
http://meri-stuff.blogspot.com/2012/01/javascript-testing-with-jstestdriver.html
Web上には日本語のまともな資料は無いっぽいです。
以下の本は実はJsTestDriverベースで書かれてるのでサンプルとしては使えますが、
リファレンスとしては使えないので若干微妙でした。
Amazon.co.jp: テスト駆動JavaScript: Christian Johansen, 長尾高弘: 本
http://www.amazon.co.jp/dp/4048707868/?tag=hatena_st1-22&ascsubtag=d-h2pmv
ちなみに上記「テスト駆動JavaScript」の1章目で「JsTestDriverは非同期をサポートしない」と書かれてますが、現在では普通にサポートしてるので大丈夫です。
あと、本の中ではドキュメントにないAPIの使い方とか解説してるので、ドキュメント関係はそんな状態だと思ってください。
(嘘が書いてたりはしないので普通に使う分には使えるレベルのドキュメントですが。。。)
CodeCoverage pluginとかもあります(実際動くことを確認しました)
http://code.google.com/p/js-test-driver/wiki/CodeCoverage
・サポート環境は?
Chrome, Firefoxの最新版とiOS4では実際に動作することを確認しました。
「テスト駆動JavaScript」では「さすがにIE5系とかじゃ動かないよ!HAHAHA!」とか書いてあった気がするので結構サポート環境は広いと思います。
・他の同種のツールとの比較は?
・Selenium Core、windmill
画面遷移とかUI全体をざっくり確認するにはSeleniumの方がいいと思いますが、細かい単体テストやるならJsTestDriverの方がいいと思います。
・BusterJS
javaではなくnode.jsベースでJsTestDriverよりJSer向きだと思います。
ただ、Windowsで動かないとかCodeCoverage無いとかの問題あるので今のところJsTestDriver使って、ある程度安定したらBusterJSに乗り換えるといいです(って@asu_reさんが言ってた)
・各種単体テストライブラリ(QUnit, Jasmin, Mocha)
例外処理とかの絡みでそのままは使えないですが、QUnit、Jasmineに関してはAdapterが公開されています。
QUnitAdapter
http://code.google.com/p/js-test-driver/wiki/QUnitAdapter
ibolmo/jasmine-jstd-adapter
https://github.com/ibolmo/jasmine-jstd-adapter
・問題点は?
まだ調べきれてないですが、多分UIイベント系のサポートは弱いです。このへんはSeleniumの方が優れてます。
ドキュメントがあんまり揃ってません。
JsTestDriverのJava server自体が対象のJSが変更されてるかどうかを見てキャッシュしてるようです。
何度か試した範囲では問題起きてないですが、実行は速いけどどこがキャッシュしてるのかよく分からなくて若干不安。。。
0-9, JsTestDriverを使うときの注意点
http://0-9.tumblr.com/post/15574052397/jstestdriver
0-9, 最近のJS系のツールを触ってみたまとめ
http://0-9.tumblr.com/post/15398953814/javascript-tools
・JsTestDriverとは何か?
超簡単に言うとSelenium CoreのJS実装とQUnitを合わせたものです。
実際Selenium ver2はJsTestDriverが使ってるWebDriverと言うAPIを使っています。
(WebDriverがブラウザを外部から動かす共通仕様で、Selenium ver2とJsTestDriverはそれを使ってる状態)
・使った感想は?
ブラウザ上で動作するJSの単体テスト環境としてはかなり快適です。
普通にブラウザ起動してリロードしながらのテストでもいいですが、
複数ブラウザで同時にテスト走らせて結果をまとめて表示させる環境としてはかなりいいです。
・使い方は?
多分以下でOK(わたしはWebStorm経由で使ってるのでこの手順は試せてないです)
jarを落とす。
http://code.google.com/p/js-test-driver/downloads/detail?name=JsTestDriver-1.3.3d.jar&can=2&q=
設定ファイル書く。
http://code.google.com/p/js-test-driver/wiki/ConfigurationFile
実行する
java -jar JsTestDriver.jar —port 9876 —config test/JsTestDriver.conf
ブラウザで表示する
http://localhost:9876/capture
// テストコードや対象コードはtest/JsTestDriver.conf内で指定する
・ドキュメントは?
本家は以下が全部。内部ページの左側リンクには全ページ含まれていないので注意(AsyncTestCase、Assertionsとかが無い)
http://code.google.com/p/js-test-driver/w/list?can=1&q=
以下の内容があれば行けると思います。
GettingStarted
http://code.google.com/p/js-test-driver/wiki/GettingStarted
ConfigurationFile
http://code.google.com/p/js-test-driver/wiki/ConfigurationFile
CommandLineFlags
http://code.google.com/p/js-test-driver/wiki/CommandLineFlags
Assertions
http://code.google.com/p/js-test-driver/wiki/Assertions
TestCase
http://code.google.com/p/js-test-driver/wiki/TestCase
AsyncTestCase
http://code.google.com/p/js-test-driver/wiki/AsyncTestCase
HtmlDoc
http://code.google.com/p/js-test-driver/wiki/HtmlDoc
ちょうど3日前に以下の内容も公開されたのでどうぞ。
This is Stuff: JavaScript Testing with JSTestDriver
http://meri-stuff.blogspot.com/2012/01/javascript-testing-with-jstestdriver.html
Web上には日本語のまともな資料は無いっぽいです。
以下の本は実はJsTestDriverベースで書かれてるのでサンプルとしては使えますが、
リファレンスとしては使えないので若干微妙でした。
Amazon.co.jp: テスト駆動JavaScript: Christian Johansen, 長尾高弘: 本
http://www.amazon.co.jp/dp/4048707868/?tag=hatena_st1-22&ascsubtag=d-h2pmv
ちなみに上記「テスト駆動JavaScript」の1章目で「JsTestDriverは非同期をサポートしない」と書かれてますが、現在では普通にサポートしてるので大丈夫です。
あと、本の中ではドキュメントにないAPIの使い方とか解説してるので、ドキュメント関係はそんな状態だと思ってください。
(嘘が書いてたりはしないので普通に使う分には使えるレベルのドキュメントですが。。。)
CodeCoverage pluginとかもあります(実際動くことを確認しました)
http://code.google.com/p/js-test-driver/wiki/CodeCoverage
・サポート環境は?
Chrome, Firefoxの最新版とiOS4では実際に動作することを確認しました。
「テスト駆動JavaScript」では「さすがにIE5系とかじゃ動かないよ!HAHAHA!」とか書いてあった気がするので結構サポート環境は広いと思います。
・他の同種のツールとの比較は?
・Selenium Core、windmill
画面遷移とかUI全体をざっくり確認するにはSeleniumの方がいいと思いますが、細かい単体テストやるならJsTestDriverの方がいいと思います。
・BusterJS
javaではなくnode.jsベースでJsTestDriverよりJSer向きだと思います。
ただ、Windowsで動かないとかCodeCoverage無いとかの問題あるので今のところJsTestDriver使って、ある程度安定したらBusterJSに乗り換えるといいです(って@asu_reさんが言ってた)
・各種単体テストライブラリ(QUnit, Jasmin, Mocha)
例外処理とかの絡みでそのままは使えないですが、QUnit、Jasmineに関してはAdapterが公開されています。
QUnitAdapter
http://code.google.com/p/js-test-driver/wiki/QUnitAdapter
ibolmo/jasmine-jstd-adapter
https://github.com/ibolmo/jasmine-jstd-adapter
・問題点は?
まだ調べきれてないですが、多分UIイベント系のサポートは弱いです。このへんはSeleniumの方が優れてます。
ドキュメントがあんまり揃ってません。
JsTestDriverのJava server自体が対象のJSが変更されてるかどうかを見てキャッシュしてるようです。
何度か試した範囲では問題起きてないですが、実行は速いけどどこがキャッシュしてるのかよく分からなくて若干不安。。。
-
tgckがこの投稿を「スキ!」と言っています
-
saitamanakaがcompozzからリブログしました
-
compozzがshinodddddからリブログして、コメントを追加しました:
JSで単体テストしたい人限定の話ですが、JsTestDriverが結構良かったので紹介します。 基本的には以下の内容のまとめです。 0-9, JsTestDriverを使うときの注意点...
-
m164がこの投稿を「スキ!」と言っています
-
kumatchがsyoichiからリブログしました
-
y-uがこの投稿を「スキ!」と言っています
-
hayakasaがこの投稿を「スキ!」と言っています
-
hirataがこの投稿を「スキ!」と言っています
-
impracticable-theoryがsyoichiからリブログしました
-
tokiwatchがこの投稿を「スキ!」と言っています
-
tokiwatchがtigaからリブログしました
-
hisabohがこの投稿を「スキ!」と言っています
-
jumpeingがこの投稿を「スキ!」と言っています
-
orihikaがsyoichiからリブログしました
-
orihikaがsyoichiからリブログしました
-
tataraseitetsuがshinodddddからリブログしました
-
tataratechinfofeedがshinodddddからリブログして、コメントを追加しました:
shinodddddがlayer13からリブログ:
-
bgnori-devがtigaからリブログしました
-
august9tがこの投稿を「スキ!」と言っています
-
athsearがこの投稿を「スキ!」と言っています
-
athsearがsyoichiからリブログしました
-
ken0205がsyoichiからリブログしました
-
shiodaifukuがtigaからリブログしました
-
tigaがshinodddddからリブログしました
-
shinodddddがlayer13からリブログしました
-
sarugeがこの投稿を「スキ!」と言っています
-
hidkがこの投稿を「スキ!」と言っています
-
hidkがsyoichiからリブログしました
-
interglacialがlayer13からリブログしました
-
sfuseyaがsyoichiからリブログしました
-
yossysurfがsyoichiからリブログしました
-
gontaがこの投稿を「スキ!」と言っています
-
itigoppoがsyoichiからリブログしました
-
seapomeranianがsyoichiからリブログしました
-
nullpointerexceptionがsyoichiからリブログしました
-
sett4がこの投稿を「スキ!」と言っています
-
kitatubaがsyoichiからリブログしました
-
layer13がnasrapracterからリブログしました
-
nasrapracterがsyoichiからリブログしました
-
knnrがsyoichiからリブログしました
-
dadanhomeがこの投稿を「スキ!」と言っています
-
kosnがsyoichiからリブログしました
-
satsea77がこの投稿を「スキ!」と言っています
-
ukarがsyoichiからリブログしました
-
typedowがこの投稿を「スキ!」と言っています
-
daikantouがsyoichiからリブログしました
-
swanky-daysがsyoichiからリブログしました
-
sada123がこの投稿を「スキ!」と言っています
-
syoichiが0-9からリブログしました
-
cancer6がこの投稿を「スキ!」と言っています
- もっと見る