はじめに

Cucumber を使い始めるにはどうすればよいですか?

ゼロから始めるには、10 分チュートリアルをお試しください。

GherkinCucumberBDDの詳細については、これらのドキュメントをご覧ください。Cucumber と BDD に関するいくつかのブログ記事へのリンクもあります。

より詳細な情報はどこで入手できますか?

さらに詳しく知りたい場合は、次のいずれかをお試しください。

どこでヘルプを入手できますか?

質問がある場合は、コミュニティに連絡してください。

Cucumber のインストールと実行

Cucumber をインストールするにはどうすればよいですか?

Cucumber のインストール方法は、使用しているプログラミング言語によって異なります。

Cucumber のインストール方法については、インストールページをご覧ください。

どのバージョンの Cucumber を使用すればよいですか?

一般的に、プログラミング言語の最新リリースバージョンの Cucumber を使用することをお勧めします。各リリースでは、既知のバグが修正されたり、新しい機能が追加されたりします。

Cucumber の最新バージョンは、10 分チュートリアルインストールページ、またはGitHubで見つけることができます。

アップグレード

Cucumber は、リリース番号にSemVer仕様に従おうとしています。基本的に、これは次のことを意味します。

  • リリースの右端(パッチ)番号のみが変更された場合は、心配する必要はありません。
  • リリースの真ん中の番号(マイナー)が変更された場合は、心配する必要はありません。
  • 左端(メジャー)番号が変更された場合は、問題が発生する可能性があります。

Cucumber を実行するにはどうすればよいですか?

Cucumber の実行方法については、Cucumber の実行をご覧ください。

CLI から Cucumber を実行するにはどうすればよいですか?

Cucumber CLI の実行方法については、コマンドラインからをご覧ください。

Cucumber を実行するための構成オプションは何ですか?

構成オプションについては、構成をご覧ください。

Cucumber はステップが未定義であると言っていますが、ステップ定義を実装しました!

ステップ定義を定義しているにもかかわらず、Cucumber がステップが未定義であると表示される場合、Cucumber がステップ定義を*見つける*ことができないことを意味します。ステップ定義へのパス (glue パス) が正しく指定されていることを確認する必要があります。

Cucumber 式と正規表現

Cucumber 式の詳細については、Cucumber 式のセクションを参照してください。正規表現 (regex) も引き続き使用できますが、同じステップ定義で Cucumber 式と正規表現を使用することはできません。

ラムダ式を使用してステップ定義を定義するにはどうすればよいですか?

他のステップまたはシナリオを呼び出すにはどうすればよいですか?

各シナリオは独立している必要があります。シナリオ同士が干渉することなく、任意の順序または並列で実行できる必要があります。

各シナリオは1つのことだけをテストする必要があります。そうすることで、失敗した場合、明確な理由で失敗します。これは、1つのシナリオを別のシナリオ内で再利用しないことを意味します。

シナリオで同じまたは類似のステップを使用する場合、またはシステムで類似のアクションを実行する場合は、それらの処理を行うためにヘルパーメソッドを抽出できます。

ヘルパーメソッドの使用方法

ヘルパーメソッドを使用すると、ステップでアクションを再利用し、類似の動作に対して複数のステップ定義を記述することを回避できます。アプリケーションへのログインなどのアクションのヘルパーメソッドを記述し、それをステップとして、または他のステップの一部として再利用します。これは、テストをクリーンで簡潔、かつ保守しやすい状態に保つのに役立ちます。

ヘルパーメソッドの使用の詳細については、ヘルパーメソッドステップ定義のグループ化を参照してください。

シナリオはどの程度詳細にする必要がありますか?

シナリオには、システムの動作を記述するのに十分な情報のみを含める必要があります。アプリケーションの実装は変更される可能性があるため、記述しないでください。変更されるとテストが失敗する可能性があります。実際の動作から注意がそれるため、詳細が多すぎてはなりません。

例を挙げて説明しましょう。ユーザーに結果が通知されるプロセスがあるとします。現時点では、電子メールを送信することで実装されている可能性がありますが、将来的には変更される可能性があります(たとえば、テキストメッセージに変更されるなど)。ステップは次のように指定できます。

Then the user will be notified

このように、ユーザーへの通知方法の実装が変更された場合、ステップ自体すべての基礎となるコードではなく、ステップ定義(またはそのステップ定義によって呼び出されるヘルパーメソッド)のみを変更する必要があります。

詳細については、より良いGherkinの記述または保守可能な自動受け入れテストの記述(pdf)を参照してください。

Excel / csvでテストケースを指定するにはどうすればよいですか?

Excelまたはcsvファイルを使用してテストケースを定義することはお勧めしません。Excelまたはcsvファイルの使用はアンチパターンと見なされます。

Cucumberの目標の1つは、実行可能な仕様を持つことです。これは、機能ファイルには、システムの予期される動作を文書化するのに適切なレベルの情報のみを含める必要があることを意味します。テストケースが別のファイルに保存されている場合、ドキュメントを読み取るにはどうすればよいでしょうか?

これは、機能ファイルに詳細が多すぎてはならないことも意味します。詳細が多すぎる場合は、ステップ定義またはヘルパーメソッドに移動することを検討してください。たとえば、多数の異なるフィールドに入力する必要があるフォームがある場合は、ビルダーパターンを使用できます。

Cucumberで条件付きでステップをスキップするにはどうすればよいですか?

各シナリオは1つのことをテストし、1つの特定の理由で失敗する必要があります。これは、ステップをスキップする理由がないことを意味します。

条件付きでステップをスキップしたい理由があると思われる場合は、アンチパターンが発生している可能性があります。たとえば、1つのシナリオで複数のことをテストしようとしているか、テスト環境またはテストデータの状態を制御できていない可能性があります。

ここで最善の策は、根本原因を修正することです。

失敗したステップの後にスキップされたステップを実行するようにCucumberを設定するにはどうすればよいですか?

Cucumberは、設計上、失敗したステップの後のすべてのステップをスキップします。ステップが失敗すると、テストは失敗し、次のステップを実行する理由はありません。追加のステップを実行する必要がある場合は、シナリオで一度に多すぎることをテストしている可能性があります。シナリオを小さなテストに分割することを検討してください。

(失敗した)ステップ後にスクリーンショットを撮る

シナリオが失敗したときにスクリーンショットを撮ると、何が問題だったのかを把握するのに役立つ場合があります。失敗時にスクリーンショットを撮るには、アフターフックを設定できます。

失敗したシナリオのでスクリーンショットを撮り、Cucumberのレポートに埋め込む方法のについては、ブラウザ自動化ページを参照してください。

すべてのステップの後にスクリーンショットを撮ることはアンチパターンと見なされることに注意してください。シナリオのすべてのステップをスクリーンショットで確認しなくても、テストの自動化に頼ることができるはずです。自動化は安定しており、テストは明確な理由で失敗する必要があります。

コンソール出力に奇妙な文字が表示される

ステップの出力に[32mのような奇妙な文字が追加されている場合、これはANSIカラーコードのエスケープの問題です。

ステップ間で状態を共有するにはどうすればよいですか?

アリティの不一致

アリティの不一致例外は、ステップがステップ定義に必要な正しい数の引数を指定していないことを示します。

ステップ定義の重複

DuplicateStepDefinitionExceptionは、同じステップを2回定義したことを示します。まず、Cucumberはステップのマッチング時に、特定のステップで使用されるキーワードを区別しません。これは、Given an order existsThen an order existsの両方が「an order exists」に一致することを意味します。Cucumber式または正規表現を使用して引数を指定する場合、複数のステップが同じ式に一致する可能性があります。最終的に、これはステップ定義を定義するクラスを拡張できないことを意味します。拡張すると重複が発生するためです。

Cucumber-JVMはKotlinをサポートしていますか?

Cucumber-JVMを使用して、Kotlinでステップ定義を記述できます。cucumber-jvmのKotlinの例をご覧ください。現時点では、Kotlinでステップ定義を生成することはできません。その理由は、Kotlinバックエンドが実装されていないためです。これに取り組みたい場合は、リクエストがありますCucumberのネイティブKotlin実装のリクエストもあります。

CucumberがIntelliJ IDEAでステップ定義を見つけられない

このインスタンスでは、IntelliJ IDEAで新しい実行構成を設定する必要があります。1. IntelliJ IDEAのメニューから**実行**>**構成の編集**をクリックします。2. 左上の**+**アイコンをクリックし、*cucumber*と入力します。**Cucumber Java**を選択します。3. JetBrainsの実行/デバッグ構成Cucumber Javaの手順に従って構成を作成します。

IntelliJ IDEAがステップ定義を含むパッケージを認識しない場合は、Glueフィールドにパッケージ名(例:*stepdefs*)を入力して手動で指定できます。

詳細については、JetBrainsドキュメントのCucumberテストの実行を参照してください。

スタックトレースに「public cucumber.runtime.java.JavaBackendのインスタンス化に失敗しました」または「NoSuchMethodException」が含まれるCucumber-JVMエラーを修正するにはどうすればよいですか?

すべてのCucumber依存関係でCucumberのバージョンが同じであることを確認し、必要な依存関係のみがあることを確認してください。これは、使用しているCucumberのバージョンに付随する推移的な依存関係を取得する必要があることを意味します。

mvn dependency:treeを実行すると、推移的な依存関係を含むすべてのMaven依存関係を確認できます。

Cucumber(推移的な依存関係)への依存関係も含まれる他のライブラリを使用している場合は、pomファイル内でその推移的な依存関係を除外して、Cucumberのバージョンが1つだけ参照されるようにしてください。推移的な依存関係を除外する手順については、Mavenの依存関係の除外に関する手順を参照してください。

このドキュメントの改善にご協力ください。このページを編集する