1.4. ネイティブ実行可能ファイルのテスト
ネイティブ実行可能ファイルの機能をテストするには、ネイティブモードでアプリケーションをテストします。@QuarkusIntegrationTest アノテーションを使用してネイティブ実行可能ファイルをビルドし、HTTP エンドポイントに対してテストを実行します。
手順
pom.xmlファイルを開き、nativeプロファイルに以下の要素があることを確認します。<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>${surefire-plugin.version}</version> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> <configuration> <systemPropertyVariables> <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path> <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> <maven.home>${maven.home}</maven.home> </systemPropertyVariables> </configuration> </execution> </executions> </plugin>Maven Failsafe プラグイン(
maven-failsafe-plugin)は統合テストを実行し、生成されるネイティブ実行可能ファイルの場所も示します。src/test/java/org/acme/quickstart/NativeGreetingResourceIT.javaファイルを開き、次のコンテンツが含まれていることを確認します。package org.acme.getting.started; import io.quarkus.test.junit.QuarkusIntegrationTest; @QuarkusIntegrationTest1 public class GreetingResourceIT extends GreetingResourceTest {2 // Execute the same tests but in native mode. }テストを実行します。
./mvnw verify -Pnative以下の例は、このコマンドの出力を示しています。
./mvnw verify -Pnative ... [getting-started-1.0-SNAPSHOT-runner:18820] universe: 587.26 ms [getting-started-1.0-SNAPSHOT-runner:18820] (parse): 2,247.59 ms [getting-started-1.0-SNAPSHOT-runner:18820] (inline): 1,985.70 ms [getting-started-1.0-SNAPSHOT-runner:18820] (compile): 14,922.77 ms [getting-started-1.0-SNAPSHOT-runner:18820] compile: 20,361.28 ms [getting-started-1.0-SNAPSHOT-runner:18820] image: 2,228.30 ms [getting-started-1.0-SNAPSHOT-runner:18820] write: 364.35 ms [getting-started-1.0-SNAPSHOT-runner:18820] [total]: 52,777.76 ms [INFO] [INFO] --- maven-failsafe-plugin:2.22.1:integration-test (default) @ getting-started --- [INFO] [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.acme.quickstart.NativeGreetingResourceIT Executing [/data/home/gsmet/git/quarkus-quickstarts/getting-started/target/getting-started-1.0-SNAPSHOT-runner, -Dquarkus.http.port=8081, -Dtest.url=http://localhost:8081, -Dquarkus.log.file.path=build/quarkus.log] 2019-04-15 11:33:20,348 INFO [io.quarkus] (main) Quarkus 999-SNAPSHOT started in 0.002s. Listening on: http://[::]:8081 2019-04-15 11:33:20,348 INFO [io.quarkus] (main) Installed features: [cdi, resteasy] [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.387 s - in org.acme.quickstart.NativeGreetingResourceIT ...注記Quarkus は、ネイティブイメージの開始まで 60 秒間待機し、その後ネイティブテストに自動的に失敗します。この期間は、
quarkus.test.wait-timeシステムプロパティーを設定することで変更できます。以下のコマンドを使用して、待機時間を延長できます。この場合の
<duration>は待機時間 (秒単位) です。./mvnw verify -Pnative -Dquarkus.test.wait-time=<duration>
1.4.1. ネイティブ実行可能ファイルとして実行する場合のテストを除外する リンクのコピーリンクがクリップボードにコピーされました!
ネイティブアプリケーションに対してテストを実行する場合は、HTTP エンドポイントと対話することしかできません。テストはネイティブで実行されないため、JVM でテストを実行する場合と同様に、アプリケーションのコードにはリンクできません。
JVM とネイティブ実行の間でテストクラスを共有し、@DisabledOnNativeImage アノテーションを使用して特定のテストを除外して、その JVM 上でのみテストを実行できます。
1.4.2. 既存のネイティブ実行可能ファイルのテスト リンクのコピーリンクがクリップボードにコピーされました!
Failsafe Maven プラグインを使用すると、既存の実行可能ビルドに対してテストを実行できます。ビルド後に、バイナリーで複数のテストセットを段階的に実行できます。
Quarkus で生成したネイティブ実行可能ファイルをテストするには、利用可能な Maven コマンドを使用します。コマンドラインを使用してこのタスクを完了できる同等の Quarkus CLI コマンドはありません。
手順
ビルド済みのネイティブ実行可能ファイルに対してテストを実行します。
./mvnw test-compile failsafe:integration-testこのコマンドは、
FailsafeMaven プラグインを使用して、既存のネイティブイメージに対してテストを実行します。あるいは、以下のコマンドを使用してネイティブ実行可能ファイルへのパスを指定することもできます。
<path>は、ネイティブイメージパスになります。./mvnw test-compile failsafe:integration-test -Dnative.image.path=<path>