我Test::Unit::TestCase用来写一些单元测试。目前,我有一个setup功能可以移动和修改磁盘上的一些夹具文件和文件夹。(目前这是一个必要的邪恶。)如果测试崩溃,teardown则不会调用该方法,从而留下文件和文件夹。下次我运行测试时,它会抱怨某某文件夹已经存在(Errno::EEXIST),这让我不得不停下来摆脱剩余的文件。
我怎么ensure总是teardown运行?(与其他一些语言ensure的想法相同finally。)
我Test::Unit::TestCase用来写一些单元测试。目前,我有一个setup功能可以移动和修改磁盘上的一些夹具文件和文件夹。(目前这是一个必要的邪恶。)如果测试崩溃,teardown则不会调用该方法,从而留下文件和文件夹。下次我运行测试时,它会抱怨某某文件夹已经存在(Errno::EEXIST),这让我不得不停下来摆脱剩余的文件。
我怎么ensure总是teardown运行?(与其他一些语言ensure的想法相同finally。)
setup()即使文件仍然存在,让你做一些清理工作怎么样?
如何在 中添加一个退出钩子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