Cucumber-annotations
提供:Dev Guides
キュウリ-注釈
- 注釈*は事前定義されたテキストで、特定の意味を保持しています。 コンパイラー/インタープリターに、実行時に何をすべきかを知らせます。 キュウリは、次のいくつかの注釈を持っています-
- 与えられた-
- テストを実行するための前提条件について説明します。
- 例-私はFacebookユーザーです
- いつ-
- テストシナリオの実行のトリガーポイントを定義します。
- 例-「<username>」と入力した場合
- その後-
- 次に、実行されるテストの期待される結果を保持します。
- 例-THENログインが成功するはずです。
- そして-
- 任意の2つのステートメント間の論理AND条件を提供します。 ANDは、GIVEN、WHENおよびTHENステートメントと組み合わせて使用できます。
- 例-「<username>」を入力し、「<password>」を入力した場合
- しかし-
- 任意の2つのステートメント間の論理OR条件を示します。 ORは、GIVEN、WHEN、およびTHENステートメントと組み合わせて使用できます。
- 例-THENログインが成功するはずです。 しかし、ホームページが欠落しているべきではありません。
- シナリオ-
- テスト対象のシナリオの詳細は、キーワード「シナリオ:」の後にキャプチャする必要があります。
- 例- シナリオ: Facebookユーザーの場合+私が+を入力し、+を入力すると、ログインが成功します。 +しかし、ホームページが欠落してはいけません。
- シナリオの概要-(後で説明します)
- 例-(後で説明します)
- 背景-
- 通常、バックグラウンドには、各シナリオを実行する前に何をセットアップするかについての指示があります。 ただし、「Before」フックの後で実行されます(後で説明します)。 したがって、これは、Webブラウザーをセットアップするとき、またはデータベース接続を確立するときに、コードに使用するのに理想的です。
- 例- 背景: Facebookホームページに移動します。
シナリオ例
アノテーションをよりよく理解するために、シナリオを自動化しましょう。
ステップ1
*AnnotationTest* という名前のMavenテストプロジェクトを作成します。
- ファイル→新規→その他→Maven→Mavenプロジェクト→次へに移動します。
- グループIDを指定します(グループIDは、すべてのプロジェクトでプロジェクトを一意に識別します)。
- アーティファクトIDを提供します(アーティファクトIDは、バージョンのないjarの名前です。 小文字の任意の名前を選択できます)。
- 完了をクリックします。
- * pom.xml-*を開きます
- Eclipseの左側にあるパッケージエクスプローラーに移動します。
- プロジェクトAnnotationTestを展開します。
- pom.xmlファイルを見つけます。
- 右クリックして、「テキストエディター」で開くオプションを選択します。
- Seleniumの依存関係の追加-これは、Mavenを示します。どのSelenium jarファイルが中央リポジトリからローカルリポジトリにダウンロードされるかを示します。
- pom.xmlを開いて編集モードにし、プロジェクトタグ内に依存関係タグ(<dependencies> </dependencies>)を作成します。
- 依存関係タグ内に、依存関係タグ(<dependency> </dependency>)を作成します。
- 依存関係タグ内に次の情報を提供します。
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
- Cucumber-Javaの依存関係を追加-これはMavenを示します。どのCucumberファイルが中央リポジトリからローカルリポジトリにダウンロードされます。
- もう1つの依存関係タグを作成します。
- 依存関係タグ内で次の情報を提供します。
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
- Cucumber-JUnitの依存関係を追加-これはMavenを示します。どのCucumber JUnitファイルが中央リポジトリからローカルリポジトリにダウンロードされます。
- もう1つの依存関係タグを作成します。
- 依存関係タグ内に次の情報を提供します。
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
- JUnitの依存関係を追加-これは、Mavenを示します。どのJUnitファイルが中央リポジトリからローカルリポジトリにダウンロードされます。
- もう1つの依存関係タグを作成します。
- 依存関係タグ内に次の情報を提供します。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
- バイナリを検証します。
- pom.xmlが正常に編集されたら、保存します。
- [プロジェクト]→[クリーン]に移動します-数分かかります。
ステップ2
*src/test/java* の下にAnnotationという名前のパッケージを作成します
- 新しく作成したプロジェクトを選択します。
- 右クリックして「新規」を選択します。
- 「パッケージ」としてオプションを選択します。
- 「注釈」という名前を付けます。
- それを保存。
- ステップ3 *
*annotation.feature* という名前の機能ファイルを作成します。
- パッケージのアウトラインを選択して右クリックします。
- 「新規」ファイルをクリックします。
- ファイルに outline.feature などの名前を付けます。
- ファイル内に次のテキストを記述して保存します。
Feature: annotation
#This is how background can be used to eliminate duplicate steps
Background:
User navigates to Facebook Given
I am on Facebook login page
#Scenario with AND
Scenario:
When I enter username as "TOM"
And I enter password as "JERRY"
Then Login should fail
#Scenario with BUT
Scenario:
When I enter username as "TOM"
And I enter password as "JERRY"
Then Login should fail
But Relogin option should be available
- ステップ4 *
ステップ定義ファイルを作成します。
- パッケージのアウトラインを選択して右クリックします。
- 「新規」ファイルをクリックします。
- ファイル名を annotation.java として指定します
- ファイル内に次のテキストを記述して保存します。
package Annotation;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
public class annotation {
WebDriver driver = null;
@Given("^I am on Facebook login page$")
public void goToFacebook() {
driver = new FirefoxDriver();
driver.navigate().to("https://www.facebook.com/");
}
@When("^I enter username as \"(.*)\"$")
public void enterUsername(String arg1) {
driver.findElement(By.id("email")).sendKeys(arg1);
}
@When ("^I enter password as \"(.*)\"$")
public void enterPassword(String arg1) {
driver.findElement(By.id("pass")).sendKeys(arg1);
driver.findElement(By.id("u_0_v")).click();
}
@Then("^Login should fail$")
public void checkFail() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test1 Pass");
} else {
System.out.println("Test1 Failed");
}
driver.close();
}
@Then("^Relogin option should be available$")
public void checkRelogin() {
if(driver.getCurrentUrl().equalsIgnoreCase(
"https://www.facebook.com/login.php?login_attempt=1&lwv=110")){
System.out.println("Test2 Pass");
} else {
System.out.println("Test2 Failed");
}
driver.close();
}
}
- ステップ5 *
ランナークラスファイルを作成します。
- パッケージのアウトラインを選択して右クリックします。
- 「新規」ファイルをクリックします。
- ファイルに runTest.java などの名前を付けます
- ファイル内に次のテキストを記述して保存します。
package Annotation;
import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(format = {"pretty", "html:target/cucumber"})
public class runTest { }
- ステップ6 *
オプションを使用してテストを実行します-
- パッケージエクスプローラーからrunTest.javaファイルを選択します。
- 右クリックして、[*として実行] *オプションを選択します
- JUnitテストを選択します。
このクラスファイルを実行すると、次のことが観察されます-
- Facebookが新しいFirefox Webブラウザーインスタンスで開きます。
- TOMは、ユーザー名フィールドへの入力として渡されます。
- JERRYは、パスワードフィールドへの入力として渡されます。
- ログインをクリックします。
- ログイン失敗に関するメッセージがブラウザに表示されます。
- コンソールには、「テストパス」が印刷されています。
- ステップ結果1。 から5。 ユーザー名が「」、パスワードが「」で再実行されます。