9

タグ @skiponchrome をシナリオに追加したいのですが、Chrome ブラウザーで Selenium テストを実行するときにシナリオをスキップする必要があります。これを行う理由は、一部のシナリオは一部の環境で機能し、他の環境では機能しないためです。これはブラウザー テスト固有のものでさえない可能性があり、OS プラットフォームなどの他の状況に適用できる可能性があります。

フックの例:

@Before("@skiponchrome") // this works
public void beforeScenario() {
  if(currentBrowser == 'chrome') { // this works
    // Skip scenario code here
  }
}

~@skiponchrome キュウリ タグでタグをスキップするように定義できることはわかっていますが、実行時にタグをスキップしたいと思います。これにより、特定の環境でテスト実行を開始するときに、どのステップをスキップするかを事前に考える必要がなくなります。

タグをキャッチし、失敗/エラーを報告せずにシナリオをスキップするフックを作成したいと考えています。これは可能ですか?

4

7 に答える 7

8

これはすでに回答済みの質問に対する最新の更新であることに気付きましたが、cucumber-jvm で直接サポートされているオプションをもう 1 つ追加したいと思います。

@Before //(cucumber one)
public void setup(){
    Assume.assumeTrue(weAreInPreProductionEnvironment);
}

"そして、シナリオは無視されるとマークされます (ただし、テストはパスします)weAreInPreProductionEnvironmentが false の場合。"

追加する必要があります

import org.junit.Assume;

受け入れられた回答との主な違いは、JUnit が障害が保留中のように動作すると想定していることです。

重要バグ修正のため、この記事の執筆時点で最新の cucumber-jvm リリース 1.2.5 が必要になります。たとえば、上記は cucumber-java8-1.2.3.jar で保留中の代わりに失敗を生成します

于 2016-12-09T16:56:16.790 に答える
5

環境ごとに個別の実行構成を定義することで、どのテストが実行されているかを明示することを本当に好みます。また、構成の数を管理しやすくするために、使用するタグの数を最小限に抑えることも好みます。

タグだけで目的を達成することは不可能だと思います。@RunWith(Cucumber.class) の代わりに使用するカスタム jUnit テスト ランナーを作成する必要があります。Cucumber の実装を見て、物事がどのように機能するかを確認してください。RuntimeOptionsFactory によって作成された RuntimeOptions を変更して、ブラウザーやその他のランタイム条件に応じてタグを含めたり除外したりする必要があります。

または、テスト スイートを呼び出す小さなスクリプトを作成し、実行中の環境に応じて、動的に含める/除外するタグのリストを作成することを検討することもできます。これは、より保守しやすく、よりクリーンなソリューションであると考えています。

于 2013-04-23T18:49:26.397 に答える
0

Maven を使用している場合は、ブラウザー プロファイルを使用して読み取り、そこに適切な ~ exclude タグを設定できますか?

コマンド ラインからこれを実行する方法を尋ねている場合を除き、その場合はシナリオに @skipchrome のタグを付けてから、キュウリを実行するときにキュウリのオプションを tags = {"~@skipchrome"} に設定します。

于 2013-04-16T21:25:55.180 に答える