0

私は、環境設定(データのクリーンアップと初期化)の役割を果たすキュウリフィーチャーファイル 'A'を持っています。他のすべての機能ファイルを実行する前に、そのファイルを実行しておきたい。cucumber-jvmの1つの機能ファイルを初期化(つまり、他の機能ファイルの前に)するにはどうすればよいですか?

http://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/のように@beforeフックのようなものです。代わりに、それはとして機能ファイルとして「A」を実行できるようにする方が良いです

@Before 
public void beforeScenario() { 
    tomcat.start(); 
    tomcat.deploy("munger"); 
    browser = new FirefoxDriver(); 
} 

:私の機能ファイル「A」はキュウリステップの数百人が含まれており、のように単純ではありませんので、しかし、それは動作しません。全体。

私は検索しましたが、回答が見つかりませんでした。私はとても驚いています。誰もこのタイプの要件を前もって持っていません。

私が見つけた最も近いものは「背景」です。しかし、これは、私は上部に 'バックグラウンド'として 'A'の内容で、同じファイルで私のテストの残りの部分を持つ巨大な機能ファイルを1つだけ持つことができることを意味します。私は本当にそれをしたくありません。

提案がありますか?

+0

初期化されている場合は、それを別のメソッドに置き、setup()でそのメソッドを呼び出します。または、あなたのシナリオでは、それを別個のフィーチャーファイルとしてのみ持ちたいのですか? –

答えて

0

デフォルトでは、キュウリの機能を順に単一のスレッドを実行している:ディレクトリ内の機能、ファイル名のアルファベット順に機能ファイルディレクトリアルファベット順

シナリオの実行が順に続いていますフィーチャファイル内で

最初のディレクトリ(アルファベット順)に、そのディレクトリで最初に(アルファベット順に)並べ替えるファイル名を持つ初期化機能があります。

通常、フィーチャーファイルで実行命令を要求するのは悪い習慣です。私たちはフィーチャー・ファイルを並行して実行するので、順序は無意味です。 JenkinsまたはTeamCityの場合は、1つのフィーチャー・ファイルを実行するビルド・ステップを追加し、残りのフィーチャー・ファイルを実行する2番目のビルド・ステップを追加することができます。

+0

@ user1559625この回答は役に立ちましたか? – MikeJRamsey56

+0

部分的にあります。しかし、柔軟性がありません。特に、この 'A'を複数回(つまり、他の検証機能を実行する前に毎回1回)実行する必要がある場合は、 – user1559625

0

私はまた、このような非常に長いシナリオの多くでScenario: Test dataと呼ばれる非常に長いシナリオが含まれている我々は、単一の機能ファイルを持っているプロジェクトは、持っている:私たちはこの長いSystemKnowsのシナリオを参照してください

Given the system knows about the following employees 
|uuid|user-key|name|nickname| 
|1|0101140000|Anna|annie| 
... hundreds of lines like this follow ... 

を非常に貴重なものであるため、テスター、製品所有者および開発者は、システム内のデータのベースラインを知ることができます。私たちのドメインは非常に複雑であり、すべての人がテストを理解できるようにするために、参照データのベースラインが必要です。 (これらの参照データは、よく知られたペルソナのようになり、共有されたチームメタファーです)

最初は、AAA.featureを最初に実行させるためにアルファベットの命名規則に頼っていました。

その後、我々はのPageObjectパターンに触発され、この設定が脆くだったことを発見し、次のトリックを使用することにしました:

  • は、In Given(~'^I set test data for all feature files$')

  • の1行を持つ背景を追加しますステップ定義を作成し、テストデータを作成するファクトリを持ち、ファクトリメソッド内に、一度だけ作成されることを確認します。testFactory.createTestData()

このようにして、リファレンス設定をシナリオとして表現することの利便性とチームコミュニケーションを向上させることができますが、安定したテスト設定も可能です。

Agata

+0

これは私が今行っている問題です。しかし、どれくらい長いシナリオでテストを作成するために工場を書くことができますか?その長いシナリオはすべてのデータを作成し、このスタックフロー問題を引き起こす理由は、この長いシナリオを再利用する方法を尋ねることです。 – user1559625

+0

この長いシナリオは次のようになります:テストデータ '1'を作成すると、そして、私はテストデータ '2'を作成します。私は、テストデータ '1000'を作成すると仮定します。各ステップは、異なる '1' '2' ... '1000'のJavaステップ関数を呼び出すようなものです。どのように単一のファクトリクラスまたはメソッドでこれを達成することが可能ですか?パラメータ化された関数を使用して – user1559625

+0

?? –

関連する問題