确保拆解在Test :: Unit :: TestCase中运行?

时间:2010-02-12 19:47:57

标签: ruby unit-testing try-catch-finally testunit

我正在使用Test::Unit::TestCase编写一些单元测试。目前,我有一个setup函数可以移动和修改磁盘上的一些fixture文件和文件夹。 (目前这是一个必要的恶意。)如果测试崩溃,则不会调用teardown方法,从而使文件和文件夹保留。下次我运行测试时,它会抱怨已经存在这样一个文件夹(Errno::EEXIST),这使我不得不停下来摆脱剩下的文件。

ensure teardown如何始终运行? (ensure与其他语言中的finally概念相同。)

2 个答案:

答案 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