无论您从事应用程序开发工作多久,无论您使用何种编程语言,您可能仍然在努力提高开发效率。此外,包括云计算、DevOps 和测试驱动开发在内的新范式,已大大加快了单个开发人员和多功能团队的开发生命周期。
您可能会认为开源工具可以帮助解决这个问题,但我想说,许多用于编码、构建和测试的开源开发框架和工具使这些挑战变得更糟。此外,由于系统依赖性和支持限制,找到合适的 Kubernetes 开发工具安装在 Linux 发行版上并不容易。
幸运的是,您可以使用 Quarkus(一种 Kubernetes 原生 Java 栈)来提高 Linux 上的开发效率。Quarkus 2.0 最近发布,其中包含在开发者控制台中进行测试的有用新功能。
交互式开发者 UX/UI
如果您需要在 Java Maven 项目中添加超过 10 个依赖项(例如,数据库连接、对象关系映射、JSON 格式化、REST API 规范),您必须在一个或多个 application.properties
文件中定义超过 60 个带有键和值的配置。更多的配置降低了单个开发人员的可读性,并且更难以让开发团队管理。
Quarkus 具有交互式界面,用于显示已添加的所有依赖项。在您使用 mvn quarkus:dev
命令启动 Quarkus 开发模式后,它在 localhost:8080/q/dev
端点可用。您还可以在 DEV 用户界面 (UI) 中更新配置,如图 1 所示,更改将自动与 application.properties
文件同步。
(注意:您可以在我的 GitHub 存储库中找到本文的完整 Quarkus 应用程序代码。)

图 1. Quarkus DEV UI (Daniel Oh, CC BY-SA 4.0)
更好的持续测试
在开发应用程序时,无论是从单体应用程序到微服务,您都必须测试您的代码。通常,专门的质量保证 (QA) 团队使用外部持续集成 (CI) 工具负责验证单元测试。这已经工作多年,并且现在仍然有效,但 Quarkus 允许程序员在代码正在运行的运行时环境中运行测试。Quarkus 2.0 通过命令行界面 (CLI) 和 DEV UI 提供此持续测试功能,如图 2 所示。

图 2. DEV UI 中的 Quarkus 测试 (Daniel Oh, CC BY-SA 4.0)
当 Quarkus 应用程序启动时,持续测试不会运行。要启动它,请单击 DEV UI 右下角的“Tests not running”(测试未运行)。您还可以通过单击 DEV UI 左侧的“Open”(打开)来打开 Web 终端。图 2 中突出显示了这两个选项,图 3 中显示了一个示例测试结果。

图 3. DEV UI 中的 Quarkus 控制台 (Daniel Oh, CC BY-SA 4.0)
如果您更改代码(例如,将 hello()
方法中的“Hello”更改为“Hi”),但不更改测试代码(无论该功能是否有效),则测试将失败,如图 4 所示。要修复它,请更新测试代码以及逻辑代码。

图 4. Quarkus DEV UI 中的测试失败 (Daniel Oh, CC BY-SA 4.0)
您可以重新运行在 src/test/java/
目录中实现的测试用例。此功能减轻了与外部 CI 工具集成的需要,并确保在持续开发业务逻辑时的功能。
零配置与开发服务
当您为特定目标进行开发时,重要的是您的开发环境能够准确反映其预期运行的环境。这可能会使在本地环境等位置安装数据库有点困难。如果您在 Linux 上进行开发,您可以在容器中运行所需的数据库,但它们往往根据可用的资源以不同的方式运行,并且您的本地环境可能没有与目标生产环境相同的资源。
Quarkus 2.0 通过提供基于 Testcontainers 构建的开发服务来帮助解决此问题。例如,您可以测试应用程序是否在生产数据库 PostgreSQL 中工作,而不是使用以下 配置的 H2 内存数据存储。
quarkus.datasource.db-kind = postgresql (1)
quarkus.hibernate-orm.log.sql = true
quarkus.datasource.username=person (2)
quarkus.datasource.password=password (3)
quarkus.hibernate-orm.database.generation=drop-and-create
%prod.quarkus.datasource.db-kind = postgresql (4)
%prod.quarkus.datasource.jdbc.url = jdbc:postgresql://db:5432/person (5)
%prod.quarkus.datasource.jdbc.driver=postgresql
quarkus.datasource.devservices.image-name=postgres:latest (6)
在上面的代码中
(1) 您将为开发和测试连接的数据库类型
(2) 数据源用户名
(3) 数据源密码
(4) 您将为生产连接的数据库类型
(5) 数据源 URL
(6) 用于 DevServices 提供程序的容器镜像名称;如果提供程序不是基于容器的(例如,H2 数据库),则此设置无效
当 Quarkus 使用新配置重新启动时,Postgres 容器镜像将被创建并自动开始运行,如图 5 所示。

图 5. Quarkus DevServices (Daniel Oh, CC BY-SA 4.0)
此功能使您可以删除生产数据存储集成测试。由于避免了开发循环中的环境差异,它还提高了您的开发效率。
结论
Quarkus 2.0 通过内置的持续测试、交互式 DEV UI 和开发服务提高了开发人员的效率。此外,它还提供了其他功能来改善开发人员体验,例如 实时编码、Kubernetes 上的远程开发模式以及加速开发循环的统一配置。Quarkus 2.0 当然也不例外!在此处亲自尝试一下!
评论已关闭。