【问题标题】:Deploying microservice to be tested within the test [duplicate]在测试中部署要测试的微服务 [重复]
【发布时间】:2018-02-08 04:16:36
【问题描述】:

也许这在测试框架中通常是不可能做到的,但是

我希望能够在测试本身部署我正在测试的微服务。我看过 Citrus、RestAssured 和空手道,听过无数的演讲,阅读过无数的博客,但我从不知道如何完成第一阶段。似乎总是假设微服务是预先部署的。

【问题讨论】:

    标签: integration-testing rest-assured citrus-framework karate


    【解决方案1】:

    2 分:

    karate-demo 是由 JUnit 测试运行程序部署的 Spring Boot 示例。这是code that starts the server

    karate-mock-servlet 更进一步,您可以在项目中运行 HTTP 集成测试,而无需启动应用服务器。节省时间,代码覆盖率报告更容易。

    如果您有任何超出这些要求的要求,我很乐意听到。我们想要实现的其中一件事是一个内置的服务器端模拟框架——想想嵌入式wiremock:但使用Karate 的DSL 很容易。但目前还没有具体的时间表。

    编辑:空手道现在有嘲笑:https://github.com/intuit/karate/tree/master/karate-netty

    【讨论】:

    • 彼得,感谢您的快速回复。上周我看了很多空手道、柑橘和 RestAssured(所有这些测试对我来说都是新的)。我可以使用空手道框架来部署不是用 Java 编写的微服务吗?我不是微服务的开发人员,但我现在碰巧知道它是 Java 和带有 Spring Boot 的 Spring。至于创建模拟服务 Hoverfly 应该可以正常工作。我的理解是空手道还与 Jenkins 和 Zappy 合作(为了在 JIRA 中报告结果)
    • @BrianReinhold - 理论上你甚至可以使用 Java 调用本机代码 - 所以这取决于你愿意推动自动化信封的程度:) 在另一个答案中,Docker 是一个受欢迎的作为测试引导程序的一部分提出服务+依赖项的方法。你会喜欢空手道的报告:twitter.com/KarateDSL/status/899671441221623809
    • Peter 我确实经常看到 Docker,这对于 Windows 用户来说是一个痛苦,因为涉及到 VM。我主要关心的是测试开发;我想避免在虚拟机中部署具有自己的嵌入式服务器的微服务只是为了开发测试的时间。不知何故,如果一个人需要单独构建、本地运行和开发该微服务的测试(及其所有模拟),而不是花一整天的时间,我无法理解如何避免了解微服务所用的语言。顺便一提;我别无选择,只能将测试结果放入 JIRA。这不是我的决定!
    【解决方案2】:

    老实说,这取决于您的微服务的部署方式以及您所针对的基础架构。我更喜欢将部署集成到 Maven 构建中,因为 Maven 提供了集成前和集成后测试阶段。

    如果您可以使用 Kubernetes 或 Docker,我建议您将部署与 fabric8 maven 插件(fabric8-maven-plugindocker-maven-plugin)集成。这将在 Maven 构建中自动创建/启动/停止 Docker 容器部署。

    如果你可以使用 Spring boot,官方的 maven 插件也可以这样做。

    另一种可能性是使用构建管道。例如,使用 Jenkins 进行持续构建将首先部署被测系统,然后在管道中执行测试。

    我个人更喜欢始终将部署和测试任务分开。如果您真的想在测试中进行部署,Citrus 作为框架能够在测试中启动/停止 Docker 容器和/或 Kubernetes pod。 Citrus 还可以与这些部署任务之前/之后的测试套件阶段集成。

    【讨论】:

    • 谢谢克里斯托夫。我研究了 Jenkins 流水线选项,这让我希望它能让测试开发更容易。需要让服务运行才能测试!现在的缺点是我不确定在 Windows 系统上使用 Docker 和 Kubernetes。
    【解决方案3】:

    我找到了一种使用 docker-compose 的方法。

    https://github.com/djangofan/karate-test-prime-example

    基本上,创建一个运行您的服务容器的docker-compose.yml,然后在调用wait-for-it.sh 后运行e2e 测试。

    【讨论】:

      猜你喜欢
      • 2017-10-04
      • 2019-08-25
      • 2020-04-18
      • 2020-10-14
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      相关资源
      最近更新 更多