4

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

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

4

3 回答 3

2

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

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

如果您可以使用 Spring boot,官方 maven 插件也可以使用相同的方式。

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

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

于 2017-08-30T14:17:09.250 回答
1

I found a way to do it using docker-compose.

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

Basically, make a docker-compose.yml that runs your service container and then also runs e2e tests after a call to wait-for-it.sh.

于 2020-01-05T23:26:22.000 回答
1

2点:

karate -demo是由 JUnit 测试运行程序部署的 Spring Boot 示例。这是启动服务器的代码

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

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

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

于 2017-08-30T13:39:27.437 回答