mustメソッドで読みやすいテスト
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
=追記(2010/07/23)
Rubyベストプラクティスのひとり読書。理解が難しかった部分を中心にまとめています。
書籍から引用しすぎと思われたページ、理解したページなどを削除して、当初より公開ページを減らしました。すいません。
読書のまとめ記事は難しいと感じたので、今後はブログで読書のまとめは書かないでおきます。差し障りがあれば現存するページも削除致しますので予めご了承下さい。
=追記ここまで
スポンサーリンク
http://github.com/sandal/rbp/blob/master/testing/test_unit_extensions.rb
からtest_unit_extensions.rbを取ってきてmustメソッドが使えるようにしておく。
9ページあたりのコードを修正加筆
require "rubygems" require "prawn" require "test/unit" require "test_unit_extensions" class Prawn::Document module Text module StyleParser extend self # module_function :hoge の代わりにこう書いてもOK TAG_PATTERN = %r{(</?[ib]>)} def process(text) text.split( TAG_PATTERN ).delete_if{|x| x.empty?} end def style_tag?(text) text =~ TAG_PATTERN end end end end class TestInlineStyleParsing < Test::Unit::TestCase def setup @parser = Prawn::Document::Text::StyleParser end must "parse italic tags" do assert_equal ["Hello ", "<i>", "Fine", "</i>", " World"], @parser.process("Hello <i>Fine</i> World") end must "parse bold tags" do assert_equal ["Some very ", "<b>", "bold text", "</b>"], @parser.process("Some very <b>bold text</b>") end must "parse mixed italic and bold tags" do assert_equal ["Hello ", "<i>", "Fine ", "<b>", "World", "</b>", "</i>"], @parser.process("Hello <i>Fine <b>World</b></i>") end must "not split out ohter tags than <i>, <b>, </i>, </b>" do assert_equal ["Hello <indigo>Ch", "</b>", "arl", "</b>", "ie</indigo>"], @parser.process("Hello <indigo>Ch</b>arl</b>ie</indigo>") end must "be able to check whether a string needs to be parsed" do assert @parser.style_tag?("Hello <i>Fine</i> World") assert !@parser.style_tag?("Hello World") end end
実行結果
>ruby 9.rb Loaded suite 9 Started ..... Finished in 0.0 seconds. 5 tests, 6 assertions, 0 failures, 0 errors
テスティングの基礎
1つのテストケースで、すべてのエッジケースをカバーしようとしない。
テストケースを分割することで見通しが良くなり、かつ全てのケースが同時にテストされる。
前処理setupメソッド、後処理teardownメソッド。
例外テストには、assert_raises(), assert_nothing_raised()メソッドを使う。適切なエラークラス名を引数にする。
Rakeでテストを自動化し(Rakefileを作り)、テストケース全体を同時に実行する。
スポンサーリンク
>> 次の記事 : メソッド名とシグニチャを統一して美しいAPI設計
- - 関連記事 -
- プロキシオブジェクトの例で関数型プログラミングを理解
- 無名クラスを継承するRubyの動的機能
- method_missing()とsend()でフック(処理を捕捉)
- obj.instance_eval(&block)とblock.call(obj)の違いを確認
- コードブロックを用いたサーバーとクライアントの例
- メソッド名とシグニチャを統一して美しいAPI設計
スポンサーリンク