Убедитесь, что демонтаж работает в Test :: Unit :: TestCase? - PullRequest
2 голосов
/ 12 февраля 2010

Я использую Test::Unit::TestCase для написания некоторых модульных тестов. В настоящее время у меня есть функция setup, которая перемещает и изменяет некоторые файлы и папки на диске. (Это неизбежное зло на данный момент.) Если тест завершается неудачей, метод teardown не вызывается, оставляя файлы и папки на пути. В следующий раз, когда я запускаю тест, он жалуется, что такая-то папка уже существует (Errno::EEXIST), что заставляет меня остановиться и избавиться от оставшихся файлов.

Как мне ensure, чтобы teardown всегда работал? (ensure - это то же самое, что и finally в некоторых других языках.)

Ответы [ 2 ]

3 голосов
/ 12 февраля 2010

Как насчет того, чтобы заставить setup() выполнить некоторую очистку, чтобы он работал, даже если файл все еще существует?

1 голос
/ 13 февраля 2010

Как насчет добавления ловушки на выходе в 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
...