2

私はTest::Unit::TestCaseいくつかの単体テストを書くために使用しています。現在、setupディスク上のいくつかのフィクスチャ ファイルとフォルダを移動および変更する機能があります。(これは現時点では必要悪です。) テストがクラッシュした場合、teardownメソッドは呼び出されず、ファイルとフォルダーが邪魔になります。次にテストを実行すると、このようなフォルダーが既に存在する ( Errno::EEXIST) と表示され、停止して残りのファイルを削除する必要があります。

どうすればensure常にteardown実行されますか? (他の言語ensureと同じ考え方です。)finally

4

2 に答える 2

3

setup()ファイルがまだ存在していても機能するように、クリーンアップを行うのはどうですか?

于 2010-02-12T20:12:52.073 に答える
1

setupで終了時のフックを追加してから、で削除するのはどうですかteardown:

class MyTestCase < Test::Unit::TestCase

  def clean_up!
    ...
  end

  def setup
    at_exit do
      unless @cleaned_up
        clean_up!
      end
    end
  end

  def teardown
    clean_up!
    @cleaned_up = true
  end

end
于 2010-02-12T22:05:36.907 に答える