1

キュウリ テストを作成する場合feature、定義済みのテストを含むclassファイルと、同じパッケージ内のまったく同じ名前のファイルを定義して、テストを実行します。(私はCucumber.options彼らが現時点で何であるかを残します)。

私が正しく理解している限り、Cucumber は同じパッケージとそのすべてのサブパッケージを調べてStep Definitions、現在のシナリオで対応するステップを実行するファイルを探します。(繰り返しますが、私はCucumber.options彼らが何であるかのために残します).

実行中のテスト クラスと実行中の現在のステップを処理している StepDefs クラスとの間のリンクを見つける方法はありますか?

src/
\_ test/
   \_ java/
   |  \_ test.cucumber.package
   |     \_ MyTest1.class
   |     \_ MyTest2.class
   |     \_ StepDefs1.class
   |     \_ StepDefs2.class
   \_ resources/
      \_ test.cucumber.package
         \_ MyTest1.feature
         \_ MyTest2.feature

したがって、MyTest1.class は MyTest1.feature で定義されたステップを実行します。これらのステップの実装は、StepDefs1.class または StepDefs2.class で定義できます。同じことが MyTest2 にも当てはまります。

1) ステップが StepDefs1 または StepDefs2 で定義されているかどうかはどうすればわかりますか?

2) ステップが実行されると、それが MyTest1 または MyTest2 に対して実行されたかどうかをどのように知ることができますか?

4

1 に答える 1

1

シングルトン TestStepDefLink クラスを作成することで回避策を見つけました。その後、テストとステップ定義の両方からこのクラスにアクセスできます。テストが開始された瞬間に、TestStepDefLink オブジェクトのインスタンスを取得し、testId 変数を設定します。stepDefs が実行されたら、testStepDefLink インスタンスを取得し、testId 変数の値を読み取ります。

cucumber はテスト クラスのインスタンスを作成せず、StepDef クラスのインスタンスのみを作成することがわかりました。したがって、Test クラスのインスタンスを自分で作成する必要があります。

于 2013-10-07T11:25:42.957 に答える