既存のクラスのテストプログラム作成
c2t.rb クラス名 a.rb > test_a.rb
の後 test_a.rbを編集した後
ruby test_a.rb
作成例
Wiki2htmlライブラリのLineクラスにて作成する
c2t.rb Wiki2html::Line wiki2html.rb
require 'rubyunit' require 'wiki2html.rb' class TestWiki2html__Line < RUNIT::TestCase def test_each assert_fail("untested") end def test_s_new assert_fail("untested") end end
と出力されるので、これをtest_wiki2html_line.rbとする。
次のように編集する。
require 'rubyunit' require './wiki2html.rb' class TestWiki2html__Line < RUNIT::TestCase def test_each a=Wiki2html::Line.new("abc\ndef\nghi\n") assert_equals("-abc-\n-def\n-ghi-\n",a.map{|b|"-#{b}-"}.join("\n")) end def test_s_new assert_kind_of(Wiki2html::Line,Wiki2html::Line.new("")) assert_not_nil(Wiki2html::Line.new("")) end end
で、実験する
$ ruby test_wiki2html_line.rb TestWiki2html__Line#test_each F. TestWiki2html__Line#test_s_new . Time: 0.002973 FAILURES!!! Test Results: Run: 2/2(3 asserts) Failures: 1 Errors: 0 Failures: 1 test_wiki2html_line.rb:8:in `test_each'(TestWiki2html__Line): expected:<-abc- -def -ghi- > but was:<-abc- -def- -ghi-> (RUNIT::AssertionFailedError) from test_wiki2html_line.rb:11
と、eachの出力結果が異なることがわかる。
そこで
assert_equals("-abc-\n-def-\n-ghi-",a.map{|b|"-#{b}-"}.join("\n"))
と修正して(テストの方を修正するとは何事だ(笑))
$ ruby test_wiki2html_line.rb TestWiki2html__Line#test_each . TestWiki2html__Line#test_s_new . Time: 0.001627 OK (2/2 tests 3 asserts)
とのテストクリアのメッセージを得ることが出来た。
もちょっと真面目に書いてみたテスト
require 'rubyunit' require './wiki2html.rb' class TestWiki2html__Line < RUNIT::TestCase def test_each a=Wiki2html::Line.new("abc\ndef\nghi\n") # 通常文 assert_equals("-abc-\n-def-\n-ghi-",a.map{|b|"-#{b}-"}.join("\n")) assert_equals("abc\n-\ndef\n-\nghi\n-\n",(r="";a.each{|b|r+="#{b}\n-\n"};r)) a=Wiki2html::Line.new("|abc\n|def\n|ghi\n") # 表 assert_equals("-\n|abc\n|def\n|ghi\n=\n",(r="";a.each{|b|r+="-\n#{b}\n=\n"};r)) a=Wiki2html::Line.new(T_table) # 表 assert_equals(L_table,(r="";a.each{|b|r+="-\n#{b}\n=\n"};r)) end def test_s_new assert_kind_of(Wiki2html::Line,Wiki2html::Line.new("")) assert_not_nil(Wiki2html::Line.new("")) end end T_table=<<TTABLE |項目1|項目2|項目3|項目4|項目5|・・・| |項目6|項目7|項目8|項目9|項目10|・・・| TTABLE L_table=<<LTABLE - |項目1|項目2|項目3|項目4|項目5|・・・| |項目6|項目7|項目8|項目9|項目10|・・・| = LTABLE
なんか既製品にテストコード書いていくのむかつくから最初から作り直すことにしよう。
macrowiki作業-2002/10/29でやってたりする