1.7. 测试您的红帽构建的 Quarkus 应用程序
编译 Quarkus Getting Started 项目后,您可以使用 JUnit 5 框架测试应用程序来验证其是否如预期运行。
另外,您可以启用对 Quarkus 应用程序的持续测试。如需更多信息,请参阅启用和运行持续测试。
Quarkus 项目在 pom.xml 文件中生成以下两个测试依赖项:
-
quarkus-junit5: 测试需要,因为它提供了控制 JUnit 5 测试框架的@QuarkusTest注解。 -
rest-assured: 不需要rest-assured依赖项,因为它提供了一种便捷的方式来测试 HTTP 端点,因此集成它。rest-assured依赖项会自动设置正确的 URL,因此不需要配置。
pom.xml 文件示例:
<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>
这些测试使用 REST-Assured 框架,但如果您愿意,您可以使用不同的库。
先决条件
- 您已编译了 Quarkus Getting Started 项目。如需更多信息,请参阅 编译并启动红帽构建的 Quarkus Getting Started 项目。
流程
打开生成的
pom.xml文件并查看内容:<plugin> <artifactId>maven-surefire-plugin</artifactId> <version>${surefire-plugin.version}</version> <configuration> <systemPropertyVariables> <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> <maven.home>${maven.home}</maven.home> </systemPropertyVariable> </configuration> </plugin>请注意以下属性的值:
-
设置
java.util.logging.manager系统属性,以确保您的应用程序使用正确的日志管理器进行测试。 -
maven.home属性指向settings.xml文件的位置,您可以在其中存储您要应用到项目的自定义 Maven 配置。
-
设置
编辑
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 from RESTEasy Reactive")); } @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类中的字段。此字段可以是字符串、URL或URI类型。您也可以在@TestHTTPResource注释中输入测试路径。例如,要测试向/foo公开的资源,请在测试中添加以下行:@TestHTTPResource("/foo") URL testUrl;-
如有必要,在
quarkus.http.test-port配置属性中指定测试端口。