Test::Unit
在teardown
执行之前,在ruby单元测试中失败的断言后,是否有一些干净而优雅的方法来执行我的代码?
我正在进行一些自动GUI测试,并希望在出现故障后立即截取屏幕截图.
如果您使用的是1.9,请不要使用Test :: Unit :: TestCase作为基类.对它进行子类化并覆盖#run_test进行救援,获取屏幕截图并重新加注:
class MyAbstractTestCase < Test::Unit::TestCase
def run_test( *args )
super(*args)
rescue
snapshot()
raise
end
end
Run Code Online (Sandbox Code Playgroud)
或者,我认为这实际上是最简洁的方法,你可以使用before_teardown钩子:
class MyTestCase < Test::Unit::TestCase
add_teardown_hook do |tc|
screenshot() unless tc.passed?
end
end
Run Code Online (Sandbox Code Playgroud)
这不适用于1.8的测试/单位,但最小的是1.9.