http://gist.github.com/39915
minitestへの抵抗という名目で、練習のために書いてみました。
ポイントは、
- inheritedを使ってサブクラスを覚えておく
- method_addedを使って、それぞれのサブクラスが持つテストを覚えておく
- 最初に定義したassertを使って、他のアサーションを定義する(関数型みたい
- メッセージをいかに読み易くできるか
このへんを抑えればテスティングフレームワークを書くのはそんなに難しくないと思います。
オリジナルの部分として、
- assert_メソッドで独自アサーションが簡単に定義できる
- verbose_onメソッドで詳細表示ができる(コマンドラインオプションいらず
- delta_isでassert_in_deltaの初期値を指定できる
を書きました。Utilitiesモジュールにメソッドを書き足すだけで、機能追加ができます。
Simpletestのテストは書いていないので、ちゃんとリファクタリングをしてなくてあまり奇麗ではないのですが、最低限のことは出来ているので、テスティングフレームワークの動きを知るためのとっかかりにはなるのではないでしょうか。(minitestよりかはRuby的に書いたつもり
# TODO: メッセージの洗練、TestSuite#runの整理