JSの単体テストにJsTestDriverがおすすめ
0-9:
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が変更されてるかどうかを見てキャッシュしてるようです。
何度か試した範囲では問題起きてないですが、実行は速いけどどこがキャッシュしてるのかよく分からなくて若干不安。。。
javascript
|
60 notes (#)
|
Comments
|
12/02/01 Wed 14:17:22
($)
|
author:syoichi
e-mail:tsuyuhara-syoichi@hotmail.co.jp
author:syoichi
e-mail:tsuyuhara-syoichi@hotmail.co.jp
-
tgck liked this
-
saitamanaka reblogged this from compozz
-
compozz reblogged this from shinoddddd and added:
JSで単体テストしたい人限定の話ですが、JsTestDriverが結構良かったので紹介します。 基本的には以下の内容のまとめです。 0-9, JsTestDriverを使うときの注意点...
-
m164 liked this
-
kumatch reblogged this from syoichi
-
y-u liked this
-
hayakasa liked this
-
hirata liked this
-
impracticable-theory reblogged this from syoichi
-
tokiwatch liked this
-
tokiwatch reblogged this from tiga
-
hisaboh liked this
-
jumpeing liked this
-
orihika reblogged this from syoichi
-
orihika reblogged this from syoichi
-
tataraseitetsu reblogged this from shinoddddd
-
tataratechinfofeed reblogged this from shinoddddd and added:
shinodddddがlayer13からリブログ:
-
bgnori-dev reblogged this from tiga
-
august9t liked this
-
athsear liked this
-
athsear reblogged this from syoichi
-
ken0205 reblogged this from syoichi
-
shiodaifuku reblogged this from tiga
-
tiga reblogged this from shinoddddd
-
shinoddddd reblogged this from layer13
-
saruge liked this
-
hidk liked this
-
hidk reblogged this from syoichi
-
interglacial reblogged this from layer13
-
sfuseya reblogged this from syoichi
-
yossysurf reblogged this from syoichi
-
gonta liked this
-
itigoppo reblogged this from syoichi
-
seapomeranian reblogged this from syoichi
-
nullpointerexception reblogged this from syoichi
-
sett4 liked this
-
kitatuba reblogged this from syoichi
-
layer13 reblogged this from nasrapracter
-
nasrapracter reblogged this from syoichi
-
knnr reblogged this from syoichi
-
dadanhome liked this
-
kosn reblogged this from syoichi
-
satsea77 liked this
-
ukar reblogged this from syoichi
-
typedow liked this
-
daikantou reblogged this from syoichi
-
swanky-days reblogged this from syoichi
-
sada123 liked this
-
syoichi reblogged this from 0-9
-
cancer6 liked this
- Show more notes
