setup
またはteardown
で実行される可能性のある高価な操作が、すべてのテストで同じで、テスト実行中に結果が乱されないと仮定します。 1回のテストの前後にそれらを実行させるのは私にとっては正しいことではないようです。RubyのTest :: Unit :: TestCaseですべてのテストの一般的なセットアップとティアダウンのロジックを定義するには?
セットアップ/ティアダウンコードは、最初のテストが実行される前と最後のテストが実行された後でのみ実行するのが好ましい方法はありますか?
編集は:ので、私が働いている特定の場合には、ネットにいくつかの拡張機能をテストする必要があります:: 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
セットアップコードの機能によって異なります。それがデータベースに物事を加えるなら、フィクスチャ/工場が道のりです - 少なくともその一例です - あなたが取っている行動についてもっと具体的にする必要があります。また、実際の範囲外のテスト(たとえば、外部APIへの接続の確立)を行っている可能性もあります。同様のケースでは、モック、スタブなどを使用してそのようなものをシミュレートする必要がありますそれはあなたが実際にテストしているものの外にあります。 – jefflunt
@normal私は特定のシナリオに関する情報を追加しました。それでも、一般的なセットアップのようなものがさらに便利になる、さまざまなシナリオを想像することができます。備品、工場、モック、スタブについて:あなたがこれらの話題に関するいくつかのリンクを思いつくことができるなら、あなたが話していることを知っているので助けになるでしょう^^ – raphinesse
私はこの質問が以前に尋ねられたと思います。あなたは "testunit"とタグ付けされた質問をブラウズすることでそれを見つけることができるかもしれません。 –