【问题标题】:After migrating from App Engine Java 8 to Java 11 what local development and unit testing tools work well?从 App Engine Java 8 迁移到 Java 11 后,哪些本地开发和单元测试工具运行良好?
【发布时间】:2019-12-29 20:47:52
【问题描述】:

我正在审查migration path from Java 8 to Java 11 on Google App Engine,过去GAE 环境提供excellent unit testing supportlocal development environment

但在新的 Java 11 运行时中,这些似乎缺失了,它们只是还没有准备好,还是没有进入这个新的运行时?

testing page 说:

要在部署之前测试您的应用程序的功能,请使用您通常使用的开发工具在本地环境中运行您的应用程序。

这似乎将问题推给了用户——但是当部署到 GAE 时,具有用于开发和单元测试的本地运行时仿真非常重要。如果 Java 11 没有出现,那么实际开发和测试 Java 11 运行时 GAE 应用程序的最佳/正确方法是什么?

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

    经过一番研究,Java 8 的 GAE 本地开发环境是独立 App Engine SDK 的一部分,has been deprecated.

    在我看来,Java 11 不会出现类似的工具集。至少现在是这样。

    我想说,对于开发,正如您引用的文档中所建议的那样,您可以使用您喜欢的任何开发服务器。

    至于单元测试。由于单元测试应该如何设计和实现,实际上最好不要依赖其他软件来模拟 GAE 行为。相反,应该使用模拟和存根为测试模块提供输入,以使它们返回预期的响应。

    【讨论】:

      【解决方案2】:

      他们的默认本地环境和 gae 运行时基于 Jetty。从 Java 11 运行时开始,您现在需要选择自己的应用程序服务器,它可以是 Jetty、Spring boot、Quarkus、Helidon 或许多其他服务器。

      我选择了 Grizzly HTTP 服务器,因为我想使用 Jersey(默认的 JAX-RS 实现)而their example 使用了 Grizzly。

      我写了一篇博文,介绍我是如何让它在 Google App Engine 上运行的: https://medium.com/@Leejjon_net/migrate-a-jersey-based-micro-service-to-java-11-and-deploy-to-app-engine-7ba41a835992

      如果您希望测试正常工作,我在此标记中修复了我博客示例中的测试: 我的完整 Java 11 示例只有一个可以在本地和应用引擎上运行的 http 请求,有一个示例单元测试: https://github.com/Leejjon/SimpleJerseyService/tree/1.1.1

      【讨论】:

      • 感谢@leejjon 的回复,我想知道更多关于如何模拟数据存储(firestore)或云任务等环境 - 但也许每个人都只是从本地远程使用云中的开发项目这些服务的开发环境?在单元测试中,如果没有可用的仿真,可以模拟这些。你就是这样做的吗?
      • 在我的项目中,我使用cloud.google.com/sdk/gcloud/reference/beta/emulators 在本地运行。我还没有迁移到 Firestore API。对于单元测试,我会模拟来自数据存储/firestore 的数据,但对于集成测试,您可以运行模拟器并让您的测试连接到该模拟器(如果您不想在构建服务器上安装 gcloud,可能在 docker 容器中) .对于我的爱好项目,我没有这样做。
      猜你喜欢
      • 2021-05-02
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 2020-06-09
      • 2019-09-20
      • 2018-08-07
      • 1970-01-01
      • 2019-01-24
      相关资源
      最近更新 更多