1

minitestにいくつかの仕様が書かれたアプリがあります。いつものように、私はそれらを使用して開始しますrake

ランダムな結果が得られることがあるため、仕様は1回は合格し、別の場合は不合格になる可能性があります。

この場合、修正後、シーケンス番号を保持して後で再生することができます。私はこの種のテスト(ランダムな結果)を持っているので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 に答える