1

我有一个应用程序,其中一些规范写入minitest。像往常一样,我使用rake.

因为有时我得到一个随机结果,我的规格可能会通过一次,而在另一次失败。

在这种情况下,我可以保留序列号并在修复后稍后重播。因为我有这种测试(随机结果),所以我通常会运行rake很多次,只是为了确保应用程序没问题。

我想知道是否有一种很好的方法来执行多个rake测试(例如 100 次),如果有任何失败或错误就停止它们?

4

2 回答 2

5

我认为你应该重新考虑你的测试,而不是测试电话。随机结果的测试对我来说似乎是错误的。

你的测试中的随机因素是什么?您能否为随机因素编写一个模拟元素并使用模拟元素的不同值重复测试。所以你得到一个“完整”的测试。

于 2011-09-15T19:19:37.620 回答
0

我创建了一个随机结果的虚拟测试来模拟您的情况:

#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,您可以将结果存储在结果文件中?
于 2011-09-16T15:55:18.410 回答