少し前に Ruby を学ぶことを決めたとき、単体テストと TDD 方法論を使い始めることも決めました。私は Test::Unit の使用を開始し、いくつかの非常に小さなクラスを作成して、一般的な単体テスト、特に Ruby と Test::Unit の感触をつかみました。
これまでのところ、すべてが非常に簡単でしたが、入力と出力だけが変更された 20 個のテストがあったため、nUnit の TestCase に似たものを実行したいと考えました。
コードは次のようになります。
def test_2_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 の観点からは非常に恐ろしいことです。私が望むのは、nUnit の TestCase に似たものです。
このようなもの:
[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 でいくつか見つけましたが、それはあまり役に立ちません。ここでも検索してみましたが、何も見つかりませんでした。
テストメソッドにパラメーターを持たせることを考えましたが、そのようにメソッドを再度定義します...それについては満足していません。その上、私の記憶が正しければ、それは不可能でした (私は今テストすることができませんし、することもできません)。
だから、私の質問は: Ruby (1.9.2) で Test::Unit を使用してデータ駆動型のテストを行うことは可能ですか? そうでない場合、どのフレームワークがそれを行うことができますか?