Creating Tests with Gherkin
Eggplant FunctionalでGherkinを使用してテストを作成する場合、特定のGherkinキーワードと自然言語を使用して、テストシナリオを高いレベルで説明します。その結果、テストされる機能、それをテストするために使用されるさまざまなシナリオ、および各シナリオの期待される結果を説明しやすいテストファイルが得られるはずです。
Gherkinコードのステップは、テスト対象のシステム(SUT)に対してアクションを実行するSenseTalkハンドラにリンクされています。Gherkinテストを「人間が読める」言語で開発したら、必要なSenseTalkハンドラを簡単に生成できます。
フィーチャの定義
Eggplant FunctionalのGherkin実装は 、言語の標準ルールに従います。ここではGherkinの基本的な使い方を説明しますが、より完全な情報については、CucumberのGherkinリファレンスを参照してください。
Gherkinテストは、フィーチャとして作成され、.featureファイルとして保存されます。フィーチャの各行は、一般的にGherkinキーワードで始まるか、空白でなければなりません。
最初の行はキーワードFeature:
で始まります。コロン(:)はキーワードの一部であることに注意してください。Feature:
キーワードは、同じ行に名前や説明が続くことができます。このキーワードの後の行を使用して、フィーチャが期待される動作やテストを追加で説明または説明することができます。
説明に使用される追加の行は、認識可能なGherkinキーワードで始まってはなりません
。この規則の例外は、Feature:
およびScenario:
キーワードに続く行で、コメントテキス トとして使用している行にのみ適用されます。
シナリオはフィーチャの残りの部分を埋めます。シナリオは、フィーチャをテストするために使用される特定のシーケンスを説明します。通常、シナリオは初期または与えられた状況を説明し始め、実行されるアクションやアクションを説明し、期待される結果を定義することで終わります。
シナリオはキーワードScenario:
で始まります。再度、コロン(:)はキーワードの一部として必要です。Scenario:
キーワードは、同じ行に名前や説明が続くことができます。Feature:
キーワードと同様に、このキーワードの後の行を使用して、シナリオが期待する動作やテストを追加で説明または説明することができます。説明に使用される行は、認識可能なGherkinキーワードで始まってはなりません
。
シナリオはステップで構成され、各ステップはGherkinキーワードに続いて、ステップの目的を説明する自然言語で始まります。ステップのキーワードは次のとおりです:
- Given: このキーワードを使用して、初期の状況やコンテキストを説明します。同じシナリオ内で複数の
Given
ステップを使用したり、このステップを省略したりすることができます。 - When: このキーワードは一般的に、シナリオのイベントやアクションを説明します。これをこのシナリオでテストしている条件と考えることができます。同じシナリオ内で複数の
When
ステップを含めたり、このステップを省略したりすることができます。 - Then: このステップは、シナリオの期待結果を説 明します。他のキーワードと同様に、複数の
Then
ステップを含めたり、このステップを省略したりすることができます。通常、このステップは期待結果のアサーションとして述べたいと思うもので、これを実際の結果と比較してテストします。 - And, But: 読みやすさのために、特定のステップが複数回ある場合は、キーワード
And
またはBut
を使用できます。例えば、設定したいGiven
の状況が3つある場合は、最初のものにGiven
キーワードを使用し、追加の2ステップにAnd
キーワードを使用することができます。以下の例を参照してください。
ステップキーワードでは、コロンは使用しません。キーワードの後には、特定のステップやテストを説明する言葉を同じ行に追加します。このテキストは何でも構いません。厳密にはコードではありませんが、SUT上でテスト、検証、その他のアクションを実行するために書くSenseTalkハンドラーにリンクしています。
サンプルのシナリオは以下のようになる可能性があります:
Scenario: Add two numbers on the Calculator app
Given that the Calculator app is running and in focus
And there is no current value in the calculator
When you add 3 and 5
Then the value displayed should be 8
フィーチャーには、好きなだけシナリオを追加することができます。通常、各シナリオはフィーチャーの特定のテストを説明します。
シナリオはGherkinフィーチャーの基本的なテスト要素です。しかし、Eggplant Functionalは、より複雑なテストシナリオを作成するために使用できるいくつかの手法をサポートしています。追加の機能については、Advanced Gherkin Techniquesを参照してください。
ステップバイステップ:Gherkinテストの作成
Eggplant FunctionalエディターでGherkinコードを使用してテストを作成するための以下のガイドを使用します。
- 新しいフィーチャーを作成するには、スイートウィ ンドウのフィーチャーズペインで右クリックし、新規フィーチャーを選択します。Mac OS Xでは、ペインの上部にあるギアアイコンをクリックして新規フィーチャーを選択することもできます。新しい、無題のフィーチャーがエディターに開きます。最初のコード行、
Feature:
とScenario:
が自動的に入力され、あなたのカスタマイズのために準備ができていることに注意してください。 - .featureファイルに名前を付けるために、フィーチャーズペインでそれを更新します。シナリオステップのSenseTalkハンドラーを生成すると(ステップ6)、Eggplant Functionalはそれらを同じ名前のスクリプトに入れ、スクリプトがまだ存在しない場合は作成します。 注:すでにスイートに存在するスクリプトと同じ名前のフィーチャーを命名すると、生成されたハンドラーはそのスクリプトに追加されます。
Feature:
行に、フィーチャーの説明的な名前を入力します。これにより、ファイルを読む人はそれが何をテストするために設計されているのかを知ることができます。必要に応じて、Feature:
とScenario:
キーワードの間の行に追加の説明を追加します。上述のように、このスペースはコメントや説明文のために予約されています。Scenario:
行に、シナリオの説明的な名前を入力します。必要に応じて、Scenario:
キーワードの後とステップキーワードの前の行にシナリオの追加の説明を追加することができます。Given
、When
、そしてThen
のキーワードを入力し、それぞれのステップの説明文を続けます。各タイプのキーワードを複数回含めることができること、または(And
またはBut
を使用する場合)、作成するシナリオに合わせてそれらのキーワードステップをスキップまたは省略することができることを覚えておいてください。つまり、ステップは必須ではありません。- ステップに対応するSenseTalkハンドラを生成するには、ステップを右クリックし、Show or Generate Handler を選択します。スクリプトエディタが開き、適切なハンドラがハイライトされます。スクリプト自体がまだ作成されていない場合、Eggplant Functionalは.featureファイルと同じ名前のスクリプトを作成します。 Eggplant Functionalがハンドラを生成し、名前を付ける方法についての詳細は、Gherkin Stepsからハンドラを生成するを参照してください。
- スクリプトエディタで、ステップの必要なアクションを実行するためのSenseTalkコードをハンドラに記述します。SenseTalkハンドラについての詳細情報は、Handlersと、Reusing Codeの"Handlers"セクションを参照してください。
- 必要に応じてFeatureに追加のシナリオを追加し、ステップ四から七を繰り返します。
Featureテストを実行すると、各ステップが関連するSenseTalkハンドラを呼び出します。Gherkinテストの実行についての詳細情報は、Eggplant FunctionalでのGherkinテストの実行を参照してください。