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>