『JavaScript Unit Test Why? What? How?』はUnit Testツールを次の4レイヤで分離している。特定レイヤのみの機能を提供するツールもあれば、複数レイヤの機能を提供するツールもある。図でテスティングフレームワークがさらに分かれているのは、Mochaが好みのAssertionライブラリ (Chaiなど)を使える設計になっているため。
- モックライブラリ
- テスティングフレームワーク
- リモートテストランナー
- 実行環境
これらのツールは組み合わせて使うことができる。フレームワークで実践! JavaScriptテスト入門では、次の4パターンを紹介している。また、『JavaScriptの開発効率を高める7つのライブラリ』では、JasmineとSino.JSを組み合わせている。
上記連載の著者のスライド『JavaScriptテストフレームワークを諸々眺めてみる』では、上記の他に次のテストフレームワークを紹介している。
また、モックライブラリSinon.JSについては、Sinon.JSが詳しい。『JavaScriptの開発効率を高める7つのライブラリ』では、モック機能を持つJasmineと組み合わせているし、Sinon.JSが定番という理解でよさそう。
この他のツールとして、上記リンク先の複数がBuster.JSを挙げている。Buster.jsはJsTestDriverと同じレイヤをカバーしていて、Sinon.JSをバンドルしているので、カバー範囲が広い。Vowというものもあるらしい。それから、Yahoo!のYUI TestがIBM developerWorksで紹介されている。
書籍に目をやると、定番とおぼしき2011年発売の『テスト駆動JavaScript』で主に取り扱っているのは、JsTestDriver。それから、最近日本語訳が発売された『メンテナブルJavaScript』では「19章 自動テスト」で次の4つのツールを紹介している。どちらも未読なので、どれくらい詳しく紹介されているかは未確認。
- YUI.Test.Selenium.Driver
- Yeti
- PhantomJS
- JsTestDriver
上記をざっと見ると、jsTestDriverの支持率が高そう。それから、比較の際に着目されているのは、次の4点。個人的には、加えて出力形式も気になるところ。
- スタイル: TDD? BDD?
- 実行環境: 実ブラウザ? ヘッドレスブラウザ?(=Phantomjs) シミュレータ?
- 非同期対応
- CI対応
以下、余談。別の観点では、そもそもテスタビリティの低いコードは、悪いコードだというわけで、Lintや静的解析ツールも有用そう。Lintだと、JSLint, JSHint, Closure Linterが有名そう。静的解析ツールはあまり見当たらない。jsmeter, complexityReport.jsあたりか?
2013/05/05追記:
静的解析ツールにplatoというツールも見つかった。
2013/05/09追記:
カバレッジ計測に限れば、JSCoverというJSCoverageの後継のツールもある。
0 件のコメント:
コメントを投稿