ruby 单元测试 : run some code after each failed test

标签 ruby unit-testing

Test::Unit 中的 ruby​​ 单元测试断言失败后,在执行 teardown 之前,是否有一些简洁优雅的方法来立即执行我的代码?

我正在做一些自动化的 GUI 测试,并希望在出现问题后立即截图。

最佳答案

如果您使用的是 1.9,请不要使用 Test::Unit::TestCase 作为您的基类。对其进行子类化并覆盖#run_test 以进行救援,截取屏幕截图并重新提出:

class MyAbstractTestCase < Test::Unit::TestCase
  def run_test( *args )
    super(*args)
  rescue
    snapshot()
    raise
  end
end

或者,我认为这实际上是最简洁的方法,您可以使用 before_teardown Hook :

class MyTestCase < Test::Unit::TestCase
  add_teardown_hook do |tc|
    screenshot() unless tc.passed?   
  end
end

这不适用于 1.8 的测试/单元,但适用于 1.9 中的最小测试。

关于 ruby 单元测试 : run some code after each failed test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9838988/

相关文章:

python - 使用模拟测试 python 中的函数

python - 使用不同的配置运行相同的测试

Ruby - splat 和 send() 混淆

ruby-on-rails - 如何使用 Ruby on Rails 随机选择要显示的内容

ruby - 如何在 Ruby 中为 Google Calendar API 授权服务帐户?

c# - 使用构造函数参数 Ninject Get<T>

unit-testing - 如何对 tornado + async def 进行单元测试?

ruby 风格 : should initialize take a file with data or just the raw data as parameters

ruby-on-rails - 使用 Ruby on Rails + PostgresQL 显示 2 周或更早的地点

Android Studio 1.1 preview 2 单机测试运行NullPointerException