先週Rubyを学び始めたばかりなので、ご容赦ください。
Ruby 1.9.3 を使用しています。単体テストを実行しようとすると問題が発生し、過去 2 日間試みましたが、単体テストを正常に実行できませんでした。
私の単純な電卓クラスのコードは次のとおりです。
class Calc
def initialize
end
def Add(leftOp, rightOp)
return (leftOp + rightOp)
end
def Sub(leftOp, rightOp)
return (leftOp - rightOp)
end
def Div(leftOp, rightOp)
if(rightOp == 0)
raise ArgumentError.new("Divided by 0")
else
return (leftOp / rightOp)
end
def Mult(leftOp, rightOp)
return (leftOp * rightOp)
end
end
myCalc = Calc.new
puts "2 + 3 = " + myCalc.Add(2, 3).to_s
puts "2 - 3 = " + myCalc.Sub(2, 3).to_s
puts "2 * 3 = " + myCalc.Mult(2, 3).to_s
puts "6 / 3 = " + myCalc.Div(6, 3).to_s
puts "10 / 0 = " + myCalc.Div(10, 0).to_s
これはうまくいきます。すべての出力が期待どおりに印刷されます。ここで、このクラスの単体テストを書きたいと思います。以下は単体テストのコードです。
require 'test/unit'
require 'test/unit/ui/console/testrunner'
require 'Calc'
class Test_Calc < Test::Unit::TestCase
def setup
myCalc = Calc.new
@result_1 = myCalc.Add(5, 8)
@result_2 = myCalc.Sub(9, 15)
@result_3 = myCalc.Mult(8, 6)
@result_4 = myCalc.Div(18, 3)
@result_5 = myCalc.Div(2, 0)
end
def test_Add
assert_equal(@result_1, 13)
end
def test_Sub
assert_equal(@result_2, -6)
end
def test_Mult
assert_equal(@result_3, 48)
end
def test_Div
assert_equal(@result_4, 6)
end
def test_Div_Zero
assert_match("\Divided by 0\", e.message)
end
end
Test::Unit::UI::Console::TestRunner.run(Test_Calc)
この単体テストを実行すると、このエラーが吐き出されました
Calc.rb ファイルは、test_Calc.rb ファイルとまったく同じディレクトリにあります。なぜそれが見えないのですか?Calc.rb ファイルを「custom_require.rb」ファイル (「lib/ruby/site_ruby/1.9.1/rubygems」) と同じディレクトリにコピーしようとしましたが、それは役に立ちませんでした。
ウェブ全体を検索した結果、Test::Unit が削除され、MiniTest (!) に置き換えられていることがわかりました。そこで、次のように MiniTest を試しました。
require 'minitest/unit'
require 'Calc'
class Test_Calc < MiniTest::Unit::TestCase
#Test_Calc definition
end
MiniTest::Unit.autorun
以前とまったく同じエラーが返されたので、MiniTest で何か問題があったのかもしれません。
次のサイトの例にも従いましたが、私の場合はうまくいかなかったようです。完全に定義されたクラス (Calc.rb) がある場合でも、「Calc - (LoadError)」が発生します。
http://www.ibm.com/developerworks/opensource/tutorials/os-ruby1/section3.html
再度ウェブ全体を検索したところ、test::unit が後方互換性のための gem として利用できることがわかったので、以下のリンクから test-unit-2.5.4.gem をダウンロードしてインストールしました。
http://rubygems.org/gems/test-unit
gemをインストールしても動きませんでした(「Ruby193\lib\ruby\gem\1.9.1\gems」にgemがインストールされていることを確認しました)。Ruby はまだ「そのようなファイルを読み込めません -- Calc (LoadError)」と不平を言っています。
では、テスト ユニットを実行するにはどうすればよいでしょうか。私は何が欠けていますか?
よろしくお願いいたします。
更新しました:
ブレインが提案したように「.\Calc」を含めた後、次の新しいエラーメッセージが表示されました。
少なくとも、今回は Calc クラスを認識し、テスト スイートのロードを開始しました。