1

状況:

私の現在のプロジェクトでは、あらゆる種類の JBehave ストーリーを実行しています。すべての「.story」ファイルは、製品とフローに関連付けられています。

例:
xyz-cellphone-call.story は、携帯電話で電話をかけることを説明するストーリーになります。
xyz-phone-call.story は、固定電話で電話をかけるストーリーです。
xyz-cellphone-browse.story は、携帯電話でインターネットをブラウジングするストーリーです。

私の質問: Jbehave では、metaFilters を追加して、メタ タグに基づいてストーリーをフィルタリングできます。タグが @product と @action であるとします。(@product 携帯電話、@action コール)。
電話と携帯電話の両方のストーリーに関する JBehave ストーリーを実行するフィルターを渡すことは可能でしょうか?そうであれば、構文は何でしょうか?

次のフィルターを追加しようとしました(どれも機能しません):

+product cellphone +product phone
+product cellphone|phone
+product cellphone,phone

アクションも同様。

複数のメタタグでフィルタリングすることはできますか?

4

3 に答える 3

1

はい、可能です。API ドキュメントには、次の情報が記載されています。

フィルターは、MetaFilter.MetaMatcher によって解析および照合される文字列表現によって一意に識別され、メタが許可されているかどうかが判断されます。

MetaFilter.DefaultMetaMatcher は、フィルタを名前と値のプロパティのシーケンス (スペースで区切られたもの) として解釈し、含める場合は「+」、除外する場合は「-」を先頭に付けます。例えば:

MetaFilter filter = new MetaFilter("+author Mauro -テーマ スモーク テスト +map *API -skip"); filter.allow(new Meta(asList("map someAPI")));

MetaFilter.GroovyMetaMatcher の使用は、プレフィックス「groovy:」によってトリガーされ、フィルターを Groovy 式として解釈できるようにします。

MetaFilter filter = new MetaFilter("groovy: (a == '11' | a == '22') && b == '33'");

したがって、おそらく条件をいじると、実行構成がカスタマイズされます。この例を試してください:

mvn clean install -P -Djbehave.meta.filter="myCustomRunConf:(+product && +action)"

API ドキュメントの MetaFilter クラスに関する詳細情報: http://jbehave.org/reference/stable/javadoc/core/org/jbehave/core/embedder/MetaFilter.html

于 2012-10-22T14:05:08.813 に答える
0

Groovy http://jbehave.org/reference/stable/meta-filtering.htmlを使用すると、より簡単な解決策があると思います

あなたの場合、それは -Dmetafilter="groovy: "product=='cellphone' && action=='call'" になります

この機能ファイルに対して「-Dmetafilter=groovy:t2 && t3」として試してみました

Meta:
    @t1

Narrative:
    As a user
    I want to blah-blah-blah


Scenario: test 1
Meta:
    @t2

Given I am on home page


Scenario: test 2
Meta:
    @t2
    @t3

Given I am on home page


Scenario: test 3
Meta:
    @t3

Given I am on home page

この場合、テスト 2 シナリオのみが実行されます

于 2015-08-24T14:28:07.163 に答える