2

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

我怎么ensure总是teardown运行?(与其他一些语言ensure的想法相同finally。)

4

2 回答 2

3

setup()即使文件仍然存在,让你做一些清理工作怎么样?

于 2010-02-12T20:12:52.073 回答
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
于 2010-02-12T22:05:36.907 回答