2012-02-08 8 views
6

私はsporkとガードを実行しています。すべて正常に動作していたRSpecテストですべてがうまくいっています。テストをスピードアップするために、.rspecファイルに置かれたタグを使って私のRSpecテストを正常にフィルタすることができました。私は私のキュウリタグをフィルタリングすることができていないものの残念ながらキュウリ/ガードを@wipのようなタグでフィルタリングするにはどうすればよいですか?

.rspec

--colour 
--debug 
--tag focus 
--tag now 

。キュウリが動くたびに、すべてまたは変更されたファイルだけが実行されます。

キュウリ/スポーク/ガードで@wip、@nowなどのタグを尊重し、それらのテストのみを実行するにはどうすればよいですか?キュウリのタグには.rspecファイルと同等のファイルがありますか?

答えて

3

キュウリプロファイルを使用して、実行するタグを定義することができます。あなたはまた、単にコマンドラインからキュウリを実行し、それを渡すことができ

https://github.com/cucumber/cucumber/wiki/cucumber.yml

:で

wip: --tags @wip 

さらに詳しい情報:YMLファイルを使用して、あなたの@wipタグを実行し、プロファイルを定義することができます-t引数:

cucumber -t @wip,@now 

ヘルプ(キュウリ-h)から:

TAG_EXPRESSIONに一致するタグで機能またはシナリオを実行する。 シナリオは、フィーチャレベルで宣言されたタグを継承します。最も簡単なのは TAG_EXPRESSIONは単なるタグです。例: - タグ@dev。タグ のタグが〜で始まる場合、これはブール値NOTを表します。例:--tags〜@ dev。 タグ式には、コンマで区切られた複数のタグがあり、 論理ORを表します。例:--tags @ dev、@wip。 --tagsオプションは と数回指定することができ、これは論理ANDを表します。例:--tags @ foo、〜@ bar --tags @zap。 これは理論的には、我々はこれらのオプションでguardfileを使用することができ、したがって

@zapブール式(@foo || @bar!)& &を表します

guard 'cucumber', :cli => "--drb --tags @now" do 
    watch(%r{^features/.+\.feature$}) 
    ... 
end 
+0

ダンに感謝します。私はコマンドラインからタグを動かすことができますが、私は 'bundle exec guard'コマンドにオプションを渡すことが分かっているので、プロファイルファイルがキーでなければならないことを示唆しています。私は私がそれが働いていることを確認することができるときに戻ってきます –

+0

こんにちはダン、私はあなたの提案を試みたことがありますが、私はそれが実装で私のエラーだと思う仕事に得ることはできません。あなたの答えを正しいものにしたいと思います。ガードファイルを介してコマンドライン引数を渡す方法を示すために、私が以下に述べた答えを組み入れることができますか?あなたがそれを行うことができれば、私は私のものを削除し、あなたのものを正しいものとしてマークします。 –

+0

それはピートですか?あなたのコメントを教えてください。 –

0

が理論的には、それがなければなりませんキュウリプロファイルを使用してこの作業を行うことが可能であることがわかった。guardfileを使用しなければならなかった。

オリジナルguardfile

guard 'cucumber', :cli => "--drb" do 
    watch(%r{^features/.+\.feature$}) 
    ... 
end 

修正guardfile

guard 'cucumber', :cli => "--drb --tags @now" do 
    watch(%r{^features/.+\.feature$}) 
    ... 
end 
2

理解するための重要な概念は、タグプロファイルに差があるです。私もキュウリとガードを使用しており、デフォルトのプロファイルが引き続き使用され、@wip(Work In Progress)タグのどれも取得されていないという不満を抱いていました。なぜそれが当てはまったのかは明らかです。他のフォーラムで述べたように、私のデフォルトプロファイルは@wipをフィルタリングします。

<設定/ cucumber.yml>

<% 
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : "" 
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}" 
base_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}" 
std_opts = "#{base_opts} --strict --tags [email protected]" 
wip_opts = base_opts 
%> 
default: --drb <%= std_opts %> features 
wip: --drb <%= wip_opts %> --tags @wip:3 --wip features 
rerun: --drb <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags [email protected] 

「std_opts = "#{base_opts} --strict --tags〜WIP @" < = WIPはstd_opts

ここで除外されています!--drb <% = wip_opts%>:私は '@wip' でマークされたシナリオや機能が含まれるであろう「WIPのプロファイル、

WIPを使用したい

- タグ@wip:3 - ウィップ機能 "< = 数値は実行するシナリオの最大数を表します。 '--wip'はCucがテストが失敗すると予想していることを示します。(私たちが作業しているので)

タグはすでに設定されていますので、私の*。featureファイルに '@wip'が含まれています。プロフィールはどうですか? Guard(Spork)を使用する場合、 'wip'プロファイルを使用するためには、それを設定する必要があります。それは理にかなっている;コンピュータは私の心を読むことができません! 'wip'プロファイルを使用するようにGuardfileを更新します。

< Guardfile>

guard 'cucumber', :cli => "--drb -p wip", :all_on_start => false, :all_after_pass => false do 
    watch(%r{^features/.+\.feature$}) 
    watch(%r{^features/support/.+$})   { 'features' } 
    watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' } 
end 

ガード 'キュウリ'、:CLI => "--drb -p WIP" = < '-p' 目的のプロファイル

を指定し、今では私のシナリオが 'wip'でうまくフィルタリングされています。

2

このオプションが導入されたのは確かではありませんが、ガードキュウリは特定のタグに焦点を当てる能力があります(特定のタグを常にフィルタリングするのとは異なります)。あなたのGuardfileでこの設定オプションを残して、あなたがそれを必要なときにのみ、あなたの焦点のタグを使用することができます。

# Guardfile 
guard 'cucumber', :focus_on => 'myfocustag' do 
    ... 
end 

# example.feature 
Feature: Example 

    @myfocustag 
    Scenario: Only run this one 
    ... 

キュウリガードは、その後、キュウリコマンドに渡す前に、これらのシナリオをフィルタリングします。これらのタグを削除すると、既定の動作(none以外ではなくすべてのシナリオが実行されます)が発生します。今

0

は、Guardは、常にあなたのアドオンで、その後私のよう@wip実行したい場合:

キュウリを。YML

guard: --format pretty --tags @wip 

Guardfile

guard 'cucumber', :command_prefix => 'spring', :cli => '--profile guard', :bundler => false do 
    # your watches 
end 

見たファイルのみを@wipが実行されようとしているだけでなく、あなたがガードコンソールでcucumberを入力すると、その後修正されていること。

関連する問題