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 Project 项目,则生成项目时会提供 Maven 包装器。在项目目录中输入以下命令:

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

      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 RESTEasy Reactive"。测试会失败,因为字符串已更改为 "Hello world"。

    2023-09-08 15:03: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 RESTEasy Reactive"
      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-C 或 'q'。
注意

如果再次将值更改回"hello",则测试会再次运行。

1.8.1. 控制持续测试的命令

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

Expand
命令描述

r

重新运行所有测试。

f

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

b

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

v

输出详细描述了从上次测试运行到控制台的测试失败。如果在上次测试运行后有相当数量的控制台输出,则此选项可能很有用。

p

临时暂停正在运行的测试。如果您要进行大量代码更改,在完成更改前不想获得测试反馈,这可能很有用。

q

退出持续测试。

o

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

i

切换基于检测的重新加载。使用这个选项不会影响测试,但允许进行实时重新加载。如果更改不会影响类的结构,这可能会很有用。

l

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

s

强制重启。使用这个选项,您可以强制扫描更改的文件以及包含更改的实时重新加载。请注意,即使没有代码更改,并且禁用实时重新加载,应用仍会重新启动。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat