2017-08-30 131 views
2

内测试也许这是不可能做一般在测试框架,但部署微服务的测试

我希望能够内测试本身部署我测试的微服务。我曾看过Citrus,RestAssured和Karate,听了无数的对话并阅读了无数的博客,但我从来没有看到如何做到这一点。似乎总是假设微服务是预先部署的。

回答

0

2分:

karate-demo是受JUnit测试浇道部署了一个弹簧引导示例。这是code that starts the server

karate-mock-servlet更进一步,您可以在不需要引导应用程序服务器的情况下在项目中运行HTTP集成测试。节省时间和代码覆盖率报告更容易。

如果您有任何其他要求,我很乐意听到他们。我们想要实现的一件事是内置的服务器端模拟框架 - 认为嵌入式wiremock:但与Karate的DSL的轻松。但是还没有具体的时间表。

+1

彼得,感谢您的快速回复。我已经在上周看过空手道,柑橘和RestAssured(所有这些测试对我而言都是新的)。我可以使用Karate框架来部署一个非Java写的微服务吗?我不是微服务的开发人员,但我现在知道在这个时候Java和Spring就是Spring Boot。至于创建模拟服务Hoverfly应该可以正常工作。我的理解是,空手道也与Jenkins和Zappy合作(为了在JIRA中报告结果) –

+0

@BrianReinhold - 理论上讲,你甚至可以用Java调用本地代码 - 所以这取决于你愿意推动自动化的程度信封:)在另一个答案中,Docker是一种提供服务+依赖关系作为测试引导的一部分的流行方式。你会喜欢Karate的报告:https://twitter.com/KarateDSL/status/899671441221623809 –

+0

彼得我看到Docker很多,这是一个很大的痛苦的Windows人,因为涉及虚拟机。我主要关心的还有测试开发;我想避免在VM中部署具有自己的嵌入式服务器的微服务来开发测试。不知何故,我不知道如何才能避免知道微服务所编写的语言,如果需要单独构建,本地运行并针对该微服务开发测试(全部模拟)并且不需要一整天。顺便一提;我别无选择,只能将测试结果放入JIRA。这不是我的决定! –

2

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

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

如果你可以使用Spring启动,官方的Maven插件可以以同样的方式进行操作。

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

我个人更喜欢总是分开部署和测试任务。如果你真的想在你的测试中进行部署,Citrus作为一个框架可以在测试中启动/停止Docker容器和/或Kubernetes窗格。对于这些部署任务,Citrus还可以在测试套件阶段之前/之后进行集成。

+1

谢谢克里斯托弗。我已经看到了Jenkins管道选项,它提高了我希望它将使测试开发变得更容易。需要有服务运行才能测试!现在的缺点是我不确定在Windows系统上使用Docker和Kubernetes的理解。 –