使用minitest进行多次测试

我有一个应用程序,其中一些规格写入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你可以将结果存储在结果文件中?

我想你应该再考虑一下你的考试,而不是考试。 具有随机结果的测试对我来说是错误的。

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