Test :: Unitテストの大規模なスイートを継承しました。最初のタスクの1つは、最初のテストが失敗した後に終了するのではなく、スイートを実行して完了することです。
私は現在AssertionFailedError
、出力文字列をレスキューして確認していますが、これは間違っているようです。より良い方法は何ですか?設定オプションのようです。
Test :: Unitテストの大規模なスイートを継承しました。最初のタスクの1つは、最初のテストが失敗した後に終了するのではなく、スイートを実行して完了することです。
私は現在AssertionFailedError
、出力文字列をレスキューして確認していますが、これは間違っているようです。より良い方法は何ですか?設定オプションのようです。
もう少し背景が役立つでしょう。私はあなたが見ている行動を理解しているとは言えません。
私は、ruby 1.8に付属しているコアテスト/ユニットライブラリと、ruby1.9に付属しているgemのいくつかのバージョンの両方を使用しています。これらの両方の通常の動作は、ロードされたスイート全体を実行して完了し、結果を要約することです。
スクリプトを実行すると、コレクターrequire 'test/unit'
で実行するための終了時フックが追加され ます(つまり、グローバルオブジェクトスペースに現在ロードされているすべてのインスタンスが実行されます)。Test::Unit::AutoRunner
Test::Unit::Collector::ObjectSpace
Test::Unit::TestCase
Test::Unit::TestSuite
また、テストクラスを手動でロードしてそれらをにパックし、その結果をキャプチャする独自のカスタムテストランナーを作成するのもかなり簡単です。
しかし、私が使用したテスト/ユニットのすべてのバージョンで、私は常にスイート全体が終了し、失敗とエラーの両方を報告するのを見てきました。詳細情報の代わりに、単一のダミーテストを試してみることをお勧めします。そのため、テスト/ユニットの動作をどのように期待するかを確認してください。
例えば
require 'test/unit'
class Foo < Test::Unit::TestCase
def testFoo
flunk 'bad foo'
end
end
class Bar < Test::Unit::TestCase
def testBar
raise 'bar bar'
end
end
与える
Loaded suite foo
Started EF Finished in 0.001000 seconds.
1) Error:
testBar(Bar)
RuntimeError: bad bar
foo.rb:9:in `testBar`
2) Failure:
testFoo(Foo) [foo.rb:4]:
bad foo
2 tests, 1 assertions, 1 failures, 1 errors, 0 skips
最後に:どこで救助/確保しようとしていますか?試験方法では?通常の状況では、AssertionFailedErrorをキャッチする理由はありません。これは、Test::Unit::TestCase
失敗をカウントし、必要なレポートを提供する方法として実行するためのものです。これをキャッチすると、テスト/ユニットの実行が妨げられます。