使用minitest进行多项测试

时间:2011-09-15 18:22:01

标签: ruby unit-testing tdd bdd minitest

我有一个应用程序,其中包含一些写入minitest的规范。像往常一样,我使用rake启动它们。

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

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

我想知道是否有一种很好的方法可以执行多次rake测试(例如100次),如果出现任何故障或任何错误,请停止测试?

2 个答案:

答案 0 :(得分:5)

我认为你应该再考虑一下你的考试,而不是考试。随机测试结果对我来说不合适。

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

答案 1 :(得分: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您可以将结果存储在结果文件中吗?