プロジェクトの受け入れテストにCucumberを使用することを検討しています。
scenario
Cucumber に aを書くとき、 , andステートメントfeature
のリストを書きます。Given
When
Then
cucumber-jvmプロジェクトを使用しているためGiven
、、When
およびThen
ステートメントは (JUnit) クラスの Java メソッドに関連しています。
プロジェクトの構造上、//に関連Given
するコードをどのように編成するのが最適かを知りたいです。私の主な関心事は、シナリオの数が非常に重要であり、特に機能間で共有されるアイテムに関して、大きなプロジェクトでキュウリのテストを維持することです。When
Then
少なくとも 2 つの主なアプローチを確認できます。
各機能は、独自の JUnit クラスに関連しています。したがって、キュウリ ファイルがある場合は、関連するJUnit クラスと、適切なおよび注釈付きのメソッド
foo/bar/baz.feature
を見つけることができます。foo.bar.Baz
@Given
@When
@Then
@Given
、@When
および@Then
メソッドを「テーマ別」クラスおよびパッケージに分離します。たとえば、キュウリのシナリオで statementGiven user "foo" is logged
がある場合、@Given("^user \"([^\"]*)\" is logged$")
注釈付きのメソッドはfoo.user.User
クラス メソッドに配置され@When
ますが、同じキュウリのシナリオで後で使用されるメソッドは、別の Java クラスとパッケージに配置される可能性があります (たとえば、foo.car.RentCar
) .
私にとっては、キュウリの機能と Java コードとの関係を簡単に作成できるという点で、最初のアプローチが適しているように思えます。しかし欠点は、多くの冗長性やコードの重複が発生する可能性があることです。また、再作成を避けるために、既存のメソッドを見つけるのが難しい場合があります(IDE は役に立ちますが、ここでは Eclipse を使用していますが、既存のステートメント@Given
のリストが表示されないようです?)。Given
複数のキュウリ機能間で条件を共有している場合は、本質的に他のアプローチの方が優れているように思わGiven
れるため、コードの重複を避けたいと考えています。ここでの欠点は、@Given
Java メソッドとGiven
cucumber ステートメントの間のリンクを作成するのが難しい場合があることです (これも IDE が役に立ちますか?)。
私はきゅうりにかなり慣れていないので、私の質問は良い質問ではないかもしれません。時間と経験があれば、構造は自明になりますが、その使用法について良いフィードバックを得たいと思っています...
ありがとう。