minitestと一緒に私のプロジェクトにstandalone autotestを使用しています。私のプロジェクトの1つでは、文書をさまざまな内部形式レベルで検証する1つのファイル(validation.rb
)があります。自動テストのために複数のテストクラスを同じファイルにマップする
特定のレベルの検証をテストするには、既知の有効なドキュメントを繰り返しロードし、壊れた方法でこれを微妙に突然変異させ、壊れていることを確認する必要があります(レベル2のドキュメントはレベル1のドキュメントよりも機能が豊富です) 。要するに:
class TestValidation < MiniTest::Unit::TestCase
def setup
@l1 = Document.load(L1DOC)
end
def test_valid
assert @l1.valid_level_1?
end
def test_unbalanced_data
@l1.instance_eval{ @tracks[0].data.pop }
refute @l1.valid_level_1?, "Validation must ensure that all tracks have the same amount of data"
end
# many more tests for level 1 here
end
問題は(私の知る限り)という自動テストでは、テストクラスの名前に基づいて実行するテストを知っています。 TestValidation
は、validation.rb
が変更されたときに自動的にテストが実行されます。
自動テストがなければ、私は上記のクラスTestL1Validation
の名前を付けて、別のドキュメントをロードした新しいクラスTestL2Validation
を作成しました。しかし、私が妥当性検査をl1validation.rb
とl2validation.rb
に打ち切っていない限り、これを行うことは自動テストを中断させます。
1つのソースファイルが変更されたときに自動テストで複数のテストクラスが実行されるように、ファイルやテストの名前を付けたり、テストを設定するにはどうすればよいですか?