MiniTest を使用してテストしたい電話番号で動作する Ruby 2.0 コードがあります。電話番号の引数を取り、それをテストする関数があります(アサートを含む)。その関数を呼び出すたびに、それを新しいテスト ケースにしたいと考えています。このようなもの:
listOfPhoneNumbersForTesting.each { |phone| testphone phone }
私が望まないのはこれです:
class test2125551212 < MiniTest::Unit::TestCase
def t2125551212
testphone "2125551212"
end
end
... 10 回、20 回、または 100 回繰り返して、各電話番号をテストします ...
もちろん、MiniTest::Unit::TestCase 内にループ コードを配置することもできますが、テストする電話番号の数に関係なく、テストケースは 1 つだけになり、それは好ましくありません。(また、アサートの 1 つが失敗した場合、それ以上の電話番号はテストされません。私はそれを望んでいません!) また、2 番目の形式は DRY に違反しているように見えます。すべて電話番号が含まれています。
どういうわけか、TestPhone という名前のクラスを 1 つ作成し、電話番号引数を使用してそれを作成し、それを MiniTest フレームワークに取り込むことができるはずだと感じています。しかし、うまくいくなら、setup()、Fixtures、メタプログラミング、またはそれ以外のものを喜んで使用します。
listOfPhoneNumbersForTesting.each { |phone| TestPhone.new phone }
TestPhone は TestCase サブクラスであり、最終的に testphone を呼び出して作業を行います。
基本的に、私が欲しいのはこれです: 1. 電話番号の 1 つのリスト。リストに番号を追加すると、レポート出力にもう 1 つの TestCase が得られます。2. 1 つの電話番号に関連付けられたテストが失敗した場合でも、残りは引き続きテストされます。3. すべての電話番号は、複数のアサーションを含む同じテストを受けます。
どうもありがとう!