JavaScriptのテスト環境の参考URLメモ(2015-03時点)

JavaScriptのテスト環境、テストライブラリってどうなってるのか、2015-03時点での参考URLをまとめてみました。

結論：

* ライブラリが数種類あり、それぞれがどこのレイヤーをカバーするのか異なる。
* そのため、組み合わせはもとより出力形式、CI環境との連携、なにをどこまでテストするのか、開発者のスキル、アプリケーションのライフサイクルなど多数のパラメータのバランシングが必要となる。
* ライフサイクルの短い使い捨てなら、バランシングのためのコストも無視して「えいやっ」で決めても良いが、そもそもテスト環境の整備が必要なプロジェクトであれば、ライフサイクルもそれなりの規模が想定される。
* 技術者の自己満足や、流行り廃りに焦って拙速な判断を下さないよう厳重な注意が必要とされるだろう。
* 数年後、流行り廃りの波や、JSのテスト環境を推進してきたメイン開発者の中での「熱」が冷めた時に、後悔しないような検討を行いたい。

----

* TDD & CI for JavaScript [Karma][Mocha][Travis CI]｜ブログ｜奈良先端科学技術大学院大学 情報基盤システム学研究室
  * http://inet-lab.naist.jp/blog/tdd-ci-for-javascript/
  * 以下、このブログに掲載されてるライブラリの公式URLとか、ぐぐって1～2番めくらいに出てきた紹介記事のまとめです。

## Jasmine : Test Framework + Mock, Spy + Assertion

* Jasmine: Behavior-Driven JavaScript
    * http://jasmine.github.io/
* Jasmine使い方メモ - Qiita
    * http://qiita.com/opengl-8080/items/cf3acafda9756f4b04c9

## QUnit : Test Framework + Assertion

* QUnit
    * https://qunitjs.com/
* VOYAGE GROUP　エンジニアブログ : QUnit+PhantomJS+JenkinsでJavaScriptの品質を改善！
    * http://tech.voyagegroup.com/archives/7865704.html
* フレームワークで実践！ JavaScriptテスト入門（3）：QUnit＋PhantomJSでJavaScriptのヘッドレスなテスト (1/3) - ＠IT
    * http://www.atmarkit.co.jp/ait/articles/1211/29/news012.html

## jsunit : Test Framework + Assertion

* jsunit.net | Java Script Tool
    * http://www.jsunit.net/
* JsUnit を使った JavaScript のユニットテスト - WebOS Goodies
    * http://webos-goodies.jp/archives/51186036.html
* JsUnitとJSMockを使ったJavaScriptのテスト駆動開発
    * http://www.infoq.com/jp/articles/javascript-tdd

## Sinon.JS : Mock, Spy, Stab

* Sinon.JS - Documentation
    * http://sinonjs.org/
* JavaScriptでスパイ、スタブ、モックなどのテストダブルを行う （1/3）：CodeZine
    * http://codezine.jp/article/detail/7729
* Sinon.JS を使った JavaScript のテスト - mixi Engineers' Blog
    * http://alpha.mixi.co.jp/entry/2011/10798/

## Mocha : Test Runner & Chai : Assertion

* mochajs/mocha
    * https://github.com/mochajs/mocha
* jsでTDD！MochaとChaiとsinon.js入門 - lxyuma BLOG
    * http://lxyuma.hatenablog.com/entry/2013/12/15/211637
* Mochaを使ってJavaScriptのテストをブラウザで実行してみよう （1/3）：CodeZine
    * http://codezine.jp/article/detail/7367
* MochaとChaiでやるJavaScriptテスト
    * http://www.slideshare.net/shunjikonishi/mochachijavascript

* Home - Chai
    * http://chaijs.com/
* Mochaとchaiを使ってJavaScriptのフロントエンドテスト環境の構築 | chikathreesix
    * http://chikathreesix.com/?p=71
* Mocha, chai, sinon で JavaScriptのテスト - Qiita
    * http://qiita.com/sutetotanuki/items/ea60ab94ddb54b8d9288

## js-test-driver : Test Runner + Test Framework + Assertion

* js-test-driver - Remote javascript console - Google Project Hosting
    * https://code.google.com/p/js-test-driver/
* JsTestDriverで簡単テスト : アシアルブログ
    * http://blog.asial.co.jp/1051
* JsTestDriver 入門 | TipsZone
    * http://tipszone.jp/20121116_jstestdriver/

## Buster.JS : Test Runner + Test Framework + Assertion

* Welcome! Buster.JS is... — Buster.JS 0.7 documentation
    * http://docs.busterjs.org/en/latest/
* busterjs/buster
    * https://github.com/busterjs/buster
* 感想
    * http://azu.github.io/slide/Kamakura/busterJS.html#slide30
* buster.jsを導入＆オレオレ継続テスト的な何かをやってみる | ブログ :: Web notes.log
    * http://blog.wnotes.net/blog/article/using-busterjs-with-ci

## Karma : Test Runner

* Karma - Spectacular Test Runner for Javascript
    * http://karma-runner.github.io/0.12/index.html
* 【javascriptを使う人に知って貰いたい（エンジニア、デザイナ問わず）】karmaを使ったテスト駆動開発入門（ついでにJasmineも） - Qiita
    * http://qiita.com/shinofara/items/b3677ffdfc0c7e45e8d4
* Karma: JavaScriptテスト実行ツール - ワザノバ | wazanova
    * http://wazanova.jp/post/64172893036/karma-javascript

## testem : Test Runner

* airportyh/testem
    * https://github.com/airportyh/testem
* コードの健康状態を保て！ Jenkinsとtestemを使って、JavaScriptで継続的インテグレーション（CI）を行う （1/5）：CodeZine
    * http://codezine.jp/article/detail/8391
* JavaScriptのテストツール「testem」が素晴らしいぞ – Mach3.laBlog
    * http://blog.mach3.jp/2012/10/31/js-testem-script.html
* Node.js - Testemでサクサク駆動開発 - Qiita
    * http://qiita.com/hden@github/items/305b0edbb1a233c8c45f

## PhantomJS : Headless Browser

* http://phantomjs.org/
* ariya/phantomjs
    * https://github.com/ariya/phantomjs
* Nightmare
    * http://www.nightmarejs.org/
* segmentio/nightmare
    * https://github.com/segmentio/nightmare
* PhantomJS のラッパー Nightmare を試してみる - Qiita
    * http://qiita.com/cortyuming/items/ba1e0190954111223d29
* CasperJS, a navigation scripting and testing utility for PhantomJS and SlimerJS
    * http://casperjs.org/
* neraliu/tpjs
    * https://github.com/neraliu/tpjs
    * DOM based XSS検知用にカスタマイズしたPhantomJS

## その他のHeadless Browser

* headless browserメモ - ふきだまりブログ
    * http://yukidarake.hateblo.jp/entry/2014/09/12/204813
* Headless browser - Wikipedia, the free encyclopedia
    * http://en.wikipedia.org/wiki/Headless_browser