Как определить общую логику настройки и демонтажа для всех тестов в Ruby Test :: Unit :: TestCase? - PullRequest
5 голосов
/ 03 февраля 2012

Предположим, что в setup или teardown выполняются потенциально дорогостоящие операции, которые одинаковы для всех тестов и результаты которых не будут испорчены во время выполнения тестов.Мне кажется неправильным запускать их до / после каждого отдельного теста.

Так есть ли предпочтительный способ запуска кода установки / разрыва только перед выполнением первого теста и только после последнего теста?

Редактировать : В конкретном случае, над которым я работаю, следует протестировать некоторые расширения Net :: FTP и, таким образом, установить FTP-соединение и настроить некоторые удаленные объекты для тестирования:

class TestFTPExtensions < Test::Unit::TestCase
  def setup
    # Setup connection
    @ftp = Net::FTP.new 'localhost', 'anonymous'
    @ftp.passive = true

    # Create remote test directory
    @ftp.mkdir 'dir'

    # Create remote test file
    path = File.join Dir.tmpdir, 'file'
    File.open path, 'w' do |f|
      @ftp.put f
    end
    File.delete path
  end

  def teardown
    @ftp.rmdir 'dir'
    @ftp.delete 'file'
    @ftp.close
  end

  # imagine some tests here that don't change/remove any remote objects

end

1 Ответ

4 голосов
/ 09 февраля 2012

Благодаря Эндрю я нашел ответ на этот здесь, на stackoverflow .

Однако, пытаясь найти ответ, я также заметил, что в ветке 1.9.x стандартрамки тестирования были переведены на MiniTest.Так что на самом деле я использую это для тестирования прямо сейчас. Этот ответ объясняет, как добиться того же с MiniTest.

...