第6章 JUnit を使用した Quarkus アプリケーションのテスト
Quarkus Getting Started プロジェクトをコンパイルしたら、アプリケーションを JUnit 5 フレームワークでテストし、想定どおりに実行されることを確認します。Quarkus プロジェクトが生成した pom.xml ファイルには、テスト用の依存関係が 2 つあります。
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
quarkus-junit5 依存関係は、JUnit 5 テストフレームワークを制御する @QuarkusTest アノテーションを提供するため、テストに必要です。rest-assured 依存関係は必須ではありませんが、HTTP エンドポイントをテストする便利な方法を提供するため、統合されています。正しい URL を自動的に設定するので、何も設定する必要はありません。
これらのテストは REST-assured フレームワークを使用しますが、希望する場合は別のライブラリーを使用できます。
前提条件
- Quarkus Getting Started プロジェクトをコンパイルしていること。
手順
Surefire Maven プラグインのバージョンを設定します。
<plugin> <artifactId>maven-surefire-plugin</artifactId> <version>${surefire-plugin.version}</version> <configuration> <systemProperties> <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> </systemProperties> </configuration> </plugin>デフォルトの Surefire Maven プラグインバージョンは、JUnit 5 をサポートしません。
-
java.util.loggingシステムプロパティーを設定して、テストが適切なログマネージャーを使用するようにします。 src/test/java/org/acme/quickstart/GreetingResourceTest.javaファイルを以下の内容に一致するように編集します。package org.acme.quickstart; import io.quarkus.test.junit.QuarkusTest; import org.junit.jupiter.api.Test; import java.util.UUID; import static io.restassured.RestAssured.given; import static org.hamcrest.CoreMatchers.is; @QuarkusTest public class GreetingResourceTest { @Test public void testHelloEndpoint() { given() .when().get("/hello") .then() .statusCode(200) .body(is("hello")); } @Test public void testGreetingEndpoint() { String uuid = UUID.randomUUID().toString(); given() .pathParam("name", uuid) .when().get("/hello/greeting/{name}") .then() .statusCode(200) .body(is("hello " + uuid)); } }注記QuarkusTestランナーを使用することで、テストを開始する前に JUnit にアプリケーションを起動するよう指示します。Maven からこれらのテストを実行するには、以下のコマンドを入力します。
./mvnw test注記IDE からテストを実行することもできます。その場合は、最初にアプリケーションを停止してください。
デフォルトでは、テストはポート
8081で実行されるため、実行中のアプリケーションと競合しません。Quarkus では、RestAssured依存関係はこのポートを使用するように設定されています。別のクライアントを使用する場合は、@TestHTTPResourceアノテーションを使用して、テスト済みアプリケーションの URL をTestクラスのフィールドに直接インジェクトします。このフィールドには、タイプstring、URL、またはURIを使用できます。このアノテーションにテストパスを指定することもできます。たとえば、/myservletにマップされたサーブレットをテストするには、以下の行をテストに追加します。@TestHTTPResource("/myservlet") URL testUrl;-
必要な場合は、
quarkus.http.test-port設定プロパティーにテストポートを指定します。
Quarkus は、インジェクションを使用できない状況のベーステスト URL に設定される test.url という名前のシステムプロパティーも作成します。