1.8. 启用并运行持续测试


使用红帽构建的 Quarkus,您可以在开发应用程序时持续测试您的代码更改。Quarkus 提供持续测试功能,您可以在进行后立即运行,并将更改保存到代码。

运行连续测试时,在启动应用程序后测试会暂停。在应用程序启动时,您可以立即恢复测试。Quarkus 应用程序决定运行哪个测试,以便测试仅在已更改的代码上运行。

Quarkus 的持续测试功能会被默认启用。您可以通过将 src/main/resources/application.properties 文件中的 quarkus.test.continuous-testing 属性设置为 disabled 来禁用连续测试。

注意

如果您之前禁用了持续测试,并希望再次启用它,您必须重启 Quarkus 应用程序,然后才能开始测试。

先决条件

流程

  1. 启动 Quarkus 应用程序。

    • 如果您使用 code.quarkus.redhat.com 或 Quarkus CLI 创建 Getting Started 项目,则在生成项目时会提供 Maven 打包程序。在项目目录中输入以下命令:

      ./mvnw quarkus:dev
      Copy to Clipboard Toggle word wrap
    • 如果您使用在您的机器上安装的 Apache Maven 创建 Getting Started 项目,请输入以下命令:

      mvn quarkus:dev
      Copy to Clipboard Toggle word wrap
    • 如果您在 dev 模式下运行持续测试并使用 Quarkus CLI,请输入以下命令:

      quarkus dev
      Copy to Clipboard Toggle word wrap
  2. 在生成的输出日志中查看测试状态的详情。

    注意

    要查看输出日志,您可能需要滚动到屏幕的底部。

    • 启用持续测试后,会显示以下信息:

      Press [e] to edit command line args (currently ''), [r] to re-run, [o] Toggle test output, [:] for the terminal, [h] for more options>
      Copy to Clipboard Toggle word wrap
    • 当持续测试暂停时,会显示以下信息:

      Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>
      Copy to Clipboard Toggle word wrap
      注意

      默认情况下,在启用连续测试后,测试会在启动应用程序后暂停。要查看用于控制如何运行测试的键盘命令,请查看 命令来控制连续测试

  3. 要开始运行测试,请在键盘上按 r 键。
  4. 查看更新的输出日志,以监控测试状态和测试结果,检查测试统计信息,并获取后续操作的指导。例如:

    All 2 tests are passing (0 skipped), 2 tests were run in 2094ms. Tests completed at 14:45:11.
    Press [e] to edit command line args (currently ''), [r] to re-run, [o] Toggle test output, [:] for the terminal, [h] for more options>
    Copy to Clipboard Toggle word wrap

验证

  1. 进行代码更改。例如,在文本编辑器中,打开 src/main/java/org/acme/quickstart/GreetingsResource.java 文件。
  2. 更改"hello"端点,以返回 "Hello world" 并保存文件。

    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.Produces;
    import jakarta.ws.rs.core.MediaType;
    
    @Path("/hello")
    public class GreetingResource {
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return "Hello world";
        }
    }
    Copy to Clipboard Toggle word wrap
  3. 验证 Quarkus 是否立即重新运行测试来测试更改的代码。
  4. 查看输出日志,以检查测试结果。在本例中,测试会检查更改的字符串是否包含 "Hello from Quarkus REST" 值。测试失败,因为字符串已更改为 "Hello world"。

    2024-09-26 11:05:45,911 ERROR [io.qua.test] (Test runner thread) Test GreetingResourceTest#testHelloEndpoint() failed: java.lang.AssertionError: 1 expectation failed.
    Response body doesn't match expectation.
    Expected: is "Hello from Quarkus REST"
      Actual: Hello world
            at io.restassured.internal.ValidatableResponseOptionsImpl.body(ValidatableResponseOptionsImpl.java:238)
            at org.acme.quickstart.GreetingResourceTest.testHelloEndpoint(GreetingResourceTest.java:20)
    --
    1 test failed (1 passing, 0 skipped), 2 tests were run in 2076ms. Tests completed at 15:03:45.
    Press [e] to edit command line args (currently ''), [r] to re-run, [o] Toggle test output, [:] for the terminal, [h] for more options>
    Copy to Clipboard Toggle word wrap
  5. 要退出连续测试,请在键盘上按 Ctrl-Cq
注意

如果您将值重新更改为 "Hello from Quarkus REST",则测试会自动再次运行。

1.8.1. 控制连续测试的命令

您可以使用键盘上的热键命令控制您的选项以进行持续测试。要查看完整的命令列表,请在键盘上按"h"可用的选项如下:

Expand
命令描述

r

重新运行所有测试。

f

重新运行失败的所有测试。

b

切换"broken"模式。只有之前失败的测试才会运行,即使其他测试会受到您的代码更改的影响。如果您更改许多测试所使用的代码,但只想查看失败的测试,则此选项可能很有用。

v

打印输出详细描述了从上次测试运行到控制台的测试失败。如果上一次测试运行以来有相当多的控制台输出,此选项可能很有用。

p

临时暂停运行测试。如果您进行很多代码更改,这可能很有用,但在完成更改后不想获得测试反馈。

q

退出连续测试。

o

将测试输出打印到控制台。这默认是禁用的。禁用测试输出后,输出会被过滤并保存,但不会在控制台中显示。您可以查看 Development UI 上的测试输出。

i

切换基于检测的重新加载。使用这个选项不会影响测试,但不允许进行实时重新加载。这可用于避免在更改不会影响类结构时重新启动。

l

切换实时重新加载。使用这个选项不会影响测试,但您可以打开和关闭实时重新载入。

s

强制重启。使用此选项,您可以强制扫描已更改的文件和包含更改的实时重新加载。请注意,即使没有代码更改,且禁用了 live reload,应用程序仍会重启。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat