CentreRubyスクリプトのテスト技法Rubyスクリプトを効果的にテストする「RubyUnit」を試してみる。FAQテストって重要?Rubyは書きやすいし,高機能なので短いスクリプトで狙ったものが書ける。しれないけど,動いてるスクリプトでもリファクタリング(Refactoring)することが多いように思う。うっかり振る舞いを変えてしまったりすることがある。Rubyは何でもかんでも実行時に解決するので,実行してみないと発見が難しい。Framework)の出番。Rubyスクリプトの各パーツの挙動を調べるテスト・スクリプトを用意し,そのテストに合格しないといけない,ということにすれば,安心して内部を触ることができる。簡単なスクリプトを書いてみる。endAccountは口座を模したクラス。depositメソッドで預けてwithdrawメソッドで引き出す。balanceメソッドでその時点の残高を得る。実行結果50このスクリプトをテストするテストスクリプトを書いてみる。RUNIT::CUI::TestRunner.run(AccountTest.suite)テストは,RUNIT::TestCaseクラスから派生したテストクラスに記述する。メソッド名がtestで始まるメソッドが名前の順番に呼ばれる。テストクラスでは,assert_equalメソッドなどでテストを行う。test2でそれぞれ,残高が期待する値になるかをテストしている。テストの実行は,RUNIT::CUI::TestRunnerを用いる。asserts)正しくテストにパスした。動作を変更するときこのAccountクラスの動作を変更し,マイナスの預け入れや残高がマイナスとなるような引き出しができないようにしてみる。先にテストクラスを修正する。RUNIT::CUI::TestRunner.run(AccountTest.suite)テスト項目として,残高を超えた引き出しとマイナスの預け入れを入れた。例外が発生するかをテストするときは,assert_exceptionメソッドを使う。sample-1.2-test.rb:36例外が発生しなかったためテストに通らなかった。このテストに通るようにAccountクラスを修正する。end再びテストしてみます。asserts)今度は通りました。このように,テストを先に修正するようにすると,安全に手を入れることができます。同時に,実際の使われ方も分かるため,設計もスムーズに進めることができます。