JUnit5でのキュウリタグの使用
1. 概要
このチュートリアルでは、Cucumberタグ式を使用して、テストの実行とそれに関連するセットアップを操作する方法を説明します。
APIテストとUIテストを分離し、それぞれに対して実行する構成ステップを制御する方法を見ていきます。
2. UIおよびAPIコンポーネントを使用したアプリケーション
サンプルアプリケーションには、値の範囲の間でランダムな数値を生成するためのシンプルなUIがあります。
また、HTTPステータスコードを返す/ statusRESTエンドポイントもあります。 これらの機能の両方を、以下を使用して受け入れテストでカバーします。 キュウリと
cucumberがJunit5で動作するには、 pomの依存関係としてcucumber–junit-platform-engineを宣言する必要があります。
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit-platform-engine</artifactId>
<version>6.10.3</version>
</dependency>
3. きゅうりのタグと条件付きフック
きゅうりのタグは、シナリオをグループ化するのに役立ちます。 UIとAPIをテストするための要件が異なるとしましょう。 たとえば、UIコンポーネントをテストするためにブラウザを起動する必要がありますが、 /statusエンドポイントを呼び出す場合は必要ありません。 必要なのは、実行するステップとタイミングを把握する方法です。 きゅうりのタグはこれを助けることができます。
4. UIテスト
まず、機能またはシナリオをタグでグループ化します。 ここでは、UI機能を@uiタグでマークします。
@ui
Feature: UI - Random Number Generator
Scenario: Successfully generate a random number
Given we are expecting a random number between min and max
And I am on random-number-generator page
When I enter min 1
And I enter max 10
And I press Generate button
Then I should receive a random number between 1 and 10
次に、これらのタグに基づいて、条件付きフックを使用して、この機能グループに対して実行するものを操作できます。 これは、ScenearioHooksの関連するタグで注釈が付けられた@Beforeメソッドと@Afterメソッドを別々に使用して行います。
@Before("@ui")
public void setupForUI() {
uiContext.getWebDriver();
}
@After("@ui")
public void tearDownForUi(Scenario scenario) throws IOException {
uiContext.getReport().write(scenario);
uiContext.getReport().captureScreenShot(scenario, uiContext.getWebDriver());
uiContext.getWebDriver().quit();
}
5. APIテスト
UIテストと同様に、API機能に@apiタグを付けることができます。
@api
Feature: Health check
Scenario: Should have a working health check
When I make a GET call on /status
Then I should receive 200 response status code
And should receive a non-empty body
@Beforeメソッドと@Afterメソッドにも@apiタグが付いています。
@Before("@api")
public void setupForApi() {
RestAssuredMockMvc.mockMvc(mvc);
RestAssuredMockMvc.config = RestAssuredMockMvc.config()
.logConfig(new LogConfig(apiContext.getReport().getRestLogPrintStream(), true));
}
@After("@api")
public void tearDownForApi(Scenario scenario) throws IOException {
apiContext.getReport().write(scenario);
}
AcceptanceTestRunnerIT、を実行すると、関連するテストに対して適切なセットアップとティアダウンの手順が実行されていることがわかります。
6. 結論
この記事では、Cucumberタグと条件付きフックを使用して、さまざまなテストセットの実行とそのセットアップ/ティアダウン命令を制御する方法を示しました。
いつものように、この記事のコードはGitHubでから入手できます。