プロジェクトで minitest とともにスタンドアロンのautotestを使用しています。私のプロジェクトの 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
問題は、autotest が (私が知る限り) テスト クラスの名前に基づいて実行するテストを認識していることです。TestValidation
が変更されると、そのテストが自動的に実行validation.rb
されます。
自動テストがなければ、上記のクラスに名前を付けて、別のドキュメントをロードするTestL1Validation
新しいクラスを作成したでしょう。ただし、これを行うと、検証をandTestL2Validation
に分割しない限り、自動テストが中断されます。l1validation.rb
l2validation.rb
1 つのソース ファイルが変更されたときに autotest が複数のテスト クラスを実行するように、ファイルやテストに名前を付けたり、テストを設定したりするにはどうすればよいですか?