Когда я недавно решил изучить Ruby, я также решил, что начну использовать модульные тесты и методологию TDD. Я начал с Test::Unit и написал пару очень маленьких классов, чтобы получить представление о модульном тестировании в целом и о Ruby и Test::Unit в частности.
До сих пор все было довольно просто, но затем я захотел сделать что-то похожее на TestCase от nUnit, поскольку у меня было 20 тестов, в которых менялись только ввод и вывод.
Код выглядит следующим образом:
def test[TestCase(2.5d, 2d, Result=1.25d)]
[TestCase(-2.5d, 1d, Result = -2.5d)]
public double ValidateDivision(double numerator, double denominator)
{
var myClass = new MyClass();
return myClass.Divide(numerator,denominator);
}
inserted_return_true
actual = @prime_generator.is_prime?(2)
assert_equal(true, actual)
end
def test_3_inserted_return_true
actual = @prime_generator.is_prime?(3)
assert_equal(true, actual)
end
def test_5_inserted_return_true
actual = @prime_generator.is_prime?(5)
assert_equal(true, actual)
end
Что довольно ужасно с DRY-перспективы. Я бы хотел что-то похожее на TestCase от nUnit.
Что-то вроде этого:
[TestCase(2.5d, 2d, Result=1.25d)]
[TestCase(-2.5d, 1d, Result = -2.5d)]
public double ValidateDivision(double numerator, double denominator)
{
var myClass = new MyClass();
return myClass.Divide(numerator,denominator);
}
Я пробовал гуглить, но ничего не нашел о Test::Unit. Я нашел кое-что в RSpec и Selenium, но это мне не очень помогает. Я тоже пробовал искать здесь, но тоже ничего не нашел.
Я думал о том, чтобы метод тестирования принимал параметры, но снова определял методы... Не доволен этим. Кроме того, если я правильно помню, это было даже невозможно (сейчас я не могу проверить, а то хотел бы).
Итак, мой вопрос: возможно ли проводить тестирование на основе данных с помощью Test::Unit в Ruby (1.9.2)? Если нет, то какие фреймворки могут это сделать?