2013年5月2日木曜日

JavaScriptのUnit Test Tool

まとめた先から情報が古くなりそうで躊躇していたけれど、JavaScriptのUnit Testツールについて、最近見かけた情報をまとめてみる。


『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 件のコメント:

コメントを投稿