既存のクラスのテストプログラム作成

 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 &#39;rubyunit&#39;
 require &#39;./wiki2html.rb&#39;
 
 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&#39;(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 &#39;rubyunit&#39;
 require &#39;./wiki2html.rb&#39;
 
 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でやってたりする