My TIPs for the programing

プログラミング学習記録

【テストプログラムを作成1】test/unit

作成したじゃんけんプログラムをテストしたい。

エラーに次ぐエラーで勉強になりました

test/unitというgemを使うらしい。これは初めて使うのでインストールされているか確認。

$gem list test

*** LOCAL GEMS ***

minitest (5.8.5)
test-unit (3.1.5)

ありますね。

でもtest/unitとtest-unitは違うし、これでいいのか?

先輩さん曰くtest-unitはrequireする際にはrequire 'test/unit'で問題ないとのこと。

ググっても2種類出て来るので混乱しました。

本題の、test/unit (これだとエラー出ます)
require 'test/unit'
require_relative 'janken'

class TC_janken < Test::Unit::TestCase
  def setup
    @obj = Janken.new
  end

  # def teardown
  # end

  def test_janken
    assert_equal("janken",@obj)
  end
end
  • setup jankenクラスのインスタンスを生成

  • teardown 今回は使っていないが、setupのあとに呼ばれる。

  • test_janken テストメソッド。 テストメソッドはtest_で始める必要がある。

  • assert_equal("janken",@obj) ここで比較している。 文字列とオブジェクトを比較していますから、これだとエラーです。

結局・・・

色々(追記)あってこうなりました。

require 'test/unit'
require_relative 'janken2'

class TC_janken < Test::Unit::TestCase
  def setup
    @judge = Judge.new
  end

  # def teardown
  # end

  def test_janken1
    assert_equal("勝ち",@judge.judgement("g","c"))
    assert_equal("あいこ",@judge.judgement("g","g"))
    assert_equal("負け",@judge.judgement("g","p"))
    assert_equal("勝ち",@judge.judgement("c","p"))
    assert_equal("あいこ",@judge.judgement("c","c"))
    assert_equal("負け",@judge.judgement("c","g"))
    assert_equal("勝ち",@judge.judgement("p","g"))
    assert_equal("あいこ",@judge.judgement("p","p"))
    assert_equal("負け",@judge.judgement("p","c"))
  end
end