我继承了大量的Test :: Unit测试,我的第一个任务之一就是让套件运行完成,而不是在第一次测试失败后退出。如何运行Test :: Unit套件来完成测试/失败的计数?
我目前正在营救AssertionFailedError
并确保输出字符串,但这只是看起来错了。更好的方法是什么?似乎它会是一个配置选项。
我继承了大量的Test :: Unit测试,我的第一个任务之一就是让套件运行完成,而不是在第一次测试失败后退出。如何运行Test :: Unit套件来完成测试/失败的计数?
我目前正在营救AssertionFailedError
并确保输出字符串,但这只是看起来错了。更好的方法是什么?似乎它会是一个配置选项。
一些更多的背景将会有所帮助。我不能说我理解你所看到的行为。
我正在使用红宝石1.8自带的核心测试/单元库,以及几个版本的宝石红宝石1.9。这两者的正常行为是运行整个加载的套件来完成并总结结果。
运行脚本,说require 'test/unit'
将增加一个上退出挂钩与一个Test::Unit::Collector::ObjectSpace
收集运行Test::Unit::AutoRunner
(即运行的Test::Unit::TestCase
当前加载在全局对象空间中的每个实例)。
编写自己的自定义测试运行器也相当容易,它可以手动加载测试类并将它们打包到Test::Unit::TestSuite
中,并捕获结果。
但是对于我使用的每个版本的测试/单元,我总是看到整个套件完成并报告失败和错误。代替进一步的信息,我建议试验一个单一的虚拟测试,看看你应该如何期待测试/单位的行为。
例如
require 'test/unit'
class Foo < Test::Unit::TestCase
def testFoo
flunk 'bad foo'
end
end
class Bar < Test::Unit::TestCase
def testBar
raise 'bar bar'
end
end
给
Loaded suite foo
Started EF Finished in 0.001000 seconds.
1) Error:
testBar(Bar)
RuntimeError: bad bar
foo.rb:9:in `testBar`
2) Failure:
testFoo(Foo) [foo.rb:4]:
bad foo
2 tests, 1 assertions, 1 failures, 1 errors, 0 skips
最后:你在哪里设法营救/保证?在测试方法中?在正常情况下,没有理由赶上AssertionFailedError。这是为Test::Unit::TestCase
做的,作为计算失败并给你所需报告的一种方法。捕捉它会干扰写入测试/单元的内容。
谢谢,我发现我的所有测试都是单独运行的,而不是一个套件,因为它们是动态创建的。 – mculp 2010-11-15 22:00:12
我的测试也运行完成,有时令我懊恼的是,当初级破坏导致大量其他破损时。我喜欢Autotest在保存更改时自动重新运行。 – 2010-11-16 01:49:07