我有一个应用程序,其中一些规范写入minitest。像往常一样,我使用rake
.
因为有时我得到一个随机结果,我的规格可能会通过一次,而在另一次失败。
在这种情况下,我可以保留序列号并在修复后稍后重播。因为我有这种测试(随机结果),所以我通常会运行rake
很多次,只是为了确保应用程序没问题。
我想知道是否有一种很好的方法来执行多个rake
测试(例如 100 次),如果有任何失败或错误就停止它们?
我认为你应该重新考虑你的测试,而不是测试电话。随机结果的测试对我来说似乎是错误的。
你的测试中的随机因素是什么?您能否为随机因素编写一个模拟元素并使用模拟元素的不同值重复测试。所以你得到一个“完整”的测试。
我创建了一个随机结果的虚拟测试来模拟您的情况:
#store it as file 'testcase.rb'
gem 'test-unit'
require 'test/unit'
class X < Test::Unit::TestCase
def test_1
num = rand(10)
assert_true( num < 5, "Value is #{num}")
end
end
以下任务调用测试 10 次并在第一次失败后停止:
TEST_REPETION = 10
task :test do
TEST_REPETION.times{
stdout = `ruby testcase.rb`
if stdout =~ /\d+\) Failure/
puts "Failure occured"
puts stdout
exit
else
puts 'Tests ok'
end
}
end
对于实际使用,我会调整一些部分:
puts 'Tests ok'
定义一个计数器来查看测试成功的频率puts stdout
,您可以将结果存储在结果文件中?