Я только что начал изучать Ruby на прошлой неделе, поэтому, пожалуйста, несите меня на этом.Unit Test with Ruby 1.9.3
Я использую 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
После поиска по всей сети снова, я узнал, что тест :: блок был доступен как драгоценный камень для обратной совместимости, и поэтому я скачал и установить тест-блок-2.5.4.gem из ссылка ниже:
http://rubygems.org/gems/test-unit
Даже после установки драгоценного камня, он по-прежнему не работает (я проверил, чтобы убедиться, что камень был установлен в «Ruby193 \ Lib \ рубин \ драгоценный камень \ 1.9.1 \ драгоценных камней»). Ruby все еще жаловался, что он «не может загрузить такой файл - Calc (LoadError)»
Итак, как мне запустить тестовый блок? Что мне не хватает?
Заранее благодарю вас за помощь.
Обновлено:
После включения, как предложил Блейн, я получил следующее новое сообщение об ошибке "\ Calc.":
Ну, по крайней мере, признает класс Calc это время , и он начал загрузку набора тестов.
Вы пробовали 'требовать»/Calc'' – BlackHatSamurai
Не размещайте изображения текста, вместо того, чтобы скопировать и вставить фактический текст прямо в свой пост. , Изображения текста нелегко разбираются, доступны для поиска или доступны. –
согласен с @AndrewMarshall: TATN, вы сделали свой вопрос un-googlable (по крайней мере, частью сообщения об ошибке), и это позор. –