我正在使用Test::Unit::TestCase
编写一些单元测试。目前,我有一个setup
函数可以移动和修改磁盘上的一些fixture文件和文件夹。 (目前这是一个必要的恶意。)如果测试崩溃,则不会调用teardown
方法,从而使文件和文件夹保留。下次我运行测试时,它会抱怨已经存在这样一个文件夹(Errno::EEXIST
),这使我不得不停下来摆脱剩下的文件。
ensure
teardown
如何始终运行? (ensure
与其他语言中的finally
概念相同。)
答案 0 :(得分:3)
如果你的setup()
做了一些清理工作,那么即使文件仍然存在,它仍能正常工作?
答案 1 :(得分:1)
如何在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