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

发布于 2024-08-20 21:36:56 字数 354 浏览 12 评论 0原文

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

如何确保teardown始终运行? (ensure 与其他一些语言中的 finally 的含义相同。)

I'm using Test::Unit::TestCase to write some unit tests. Currently, I have a setup function that moves and modifies some fixture files and folders on disk. (This is a necessary evil at the moment.) If a test crashes, the teardown method doesn't get called, leaving files and folders in the way. The next time I run a test, it complains that such-and-such a folder already exists (Errno::EEXIST), making me have to stop and get rid of the left-over files.

How do I ensure that teardown is always run? (ensure is the same idea as finally in some other languages.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我只土不豪 2024-08-27 21:36:56

让您的 setup() 进行一些清理,以便即使文件仍然存在也能正常工作怎么样?

What about making your setup() do some cleanup so that it works even if the file still exists ?

不…忘初心 2024-08-27 21:36:56

如何在 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

How about adding an on-exit hook in setup, then removing it in 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文