7

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
4

1 に答える 1

7

Andrewのおかげで、stackoverflowでこれに対する答えを見つけました。

しかし、答えを見つけようとしているときに、1.9.xブランチで標準のテストフレームワークがMiniTestに切り替えられていることにも気づきました。だから実際に私は今それをテストに使っています。この回答は、MiniTestで同じことを達成する方法を説明しています。

于 2012-02-09T19:55:16.810 に答える