假设在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
答案 0 :(得分:4)
感谢Andrew我找到了这个here on stackoverflow的答案。
然而,在尝试找到答案的过程中,我还注意到在1.9.x分支中,标准测试框架已切换到MiniTest。所以实际上我现在正在使用它进行测试。 This answer解释了如何使用MiniTest实现相同目标。