我上周刚开始学习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之后,它仍然无效(我检查确保gem已安装在“Ruby193 \ lib \ ruby \ gem \ 1.9.1 \ gems”中)。 Ruby仍然抱怨它“无法加载这样的文件 - Calc(LoadError)”
那么,我该如何运行测试单元?我错过了什么?
提前感谢您的帮助。
更新:
在Blaine建议包含“。\ Calc”之后,我收到以下新错误消息:
嗯,至少,这次它识别出Calc类,并开始加载测试套件。
答案 0 :(得分:3)
首先,如果程序说无法找到该文件,请将您的要求设为:require './Calc'
其次,请确保您使用的是最新版本的minitest gem。您可以通过执行以下操作来检查:
gem list
该版本将位于列表右侧。截至今天,当前版本为4.6.1。如果您的版本不正确,请执行以下操作进行更新:
gem install --version '4.6.1' (or whatever the version is)