我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