web-dev-qa-db-ja.com

特定の順序でRSpecタスクを実行する

テストスイート全体を実行するときに特定の順序で実行したい RSpecRake タスクがたくさんあります。

私はこのようなことを試しました:

task :run_in_order => [:one, :two, :three] do 
  puts "Run suite of tests"
end

そして、最初のテストを実行してから停止し、残りのタスクを実行しません。

したがって、Rake構文を使用している場合は機能しません。 RSpec Rakeタスクのタスクの依存関係を記録する方法はありますか?

23
Hillary

これをチェックしてください http://blog.davidchelimsky.net/2012/01/04/rspec-28-is-released/

–order Rand--orderオプションを追加しました。サポートされている値はRandとdefaultの2つです。

rspec --order random(またはRand)は、グループをランダムな順序で実行し、次に各グループ内の例をランダムな順序で実行するようにRSpecに指示します。高価なbefore(:all)フックを再実行したくないため、(すべての例を完全にランダム化するのではなく)この方法で実装しました。結果として生じるランダム化は、順序依存のバグを明らかにするのと同じくらい効果的であるため、公正なトレードオフがあります。

--order randomを使用すると、RSpecはランダマイザーのシードに使用した乱数を出力します。順序依存のバグを見つけたと思われる場合は、シードを渡すことができ、順序は一貫したままになります。

--order Rand:3455 --order defaultは、各ファイルで宣言されているグループと例をロードするようにRSpecに指示します

基本的に、スペックファイルでテストを注文してから、--order defaultオプションを指定して実行する必要があります。 。

45
luacassus