构建一个测试,该测试使用在 localhost 上运行的基于 Spring 的 REST API URL 进行测试
Posted
技术标签:
【中文标题】构建一个测试,该测试使用在 localhost 上运行的基于 Spring 的 REST API URL 进行测试【英文标题】:Build a test that consumes a Spring based REST API URL running on localhost for testing 【发布时间】:2018-06-23 23:38:04 【问题描述】:我在 Spring Boot 上构建了一个基于 REST API 的 SMS 网关,以及一个包含单元测试和集成测试的广泛测试套件,用于测试业务逻辑和 API 架构的各个层。我现在需要创建一个测试,该测试使用在各种条件下从我的本地主机运行的 API 调用。我的查询如下:
我是否需要在 localhost 上单独运行 Spring Boot 应用程序才能运行直接从 localhost 使用 API 的测试?
我需要将我的测试与 Travis 集成以实现持续集成。是否可以构建一个集成测试,在运行时在 localhost 上启动 Spring 应用程序,并直接从 localhost 调用 API URL 以测试其在向 URL 传递不同参数时的响应?
【问题讨论】:
1.使用来自sun
(com.sun.jersey.api.client.WebResource)的jersey WebResource
和来自(org.springframework.test.web.servlet.MockMvc)的2.mockmvc:D
我目前正在研究 RestAssured 以创建一个使用 API 端点的测试。您会推荐它吗?您之前是否曾将 RestAssured 与 Spring Boot 项目的构建环境集成?另外,使用 MockMvc,我不需要模拟来自端点的响应吗?我已经用我的单元和集成测试(控制器、服务层、数据访问层等)测试了 API 的各个组件,现在需要使用 API 端点而不模拟任何东西。
我现在正在使用MockMvc
,但还没有看到RestAssured
;另一方面,MockMvc
不模拟响应数据。请参阅此完整文档:docs.spring.io/spring-security/site/docs/current/reference/html/…
注意到了。让我查看文档并回复您,以防我有任何疑问或当我能够成功构建所需的测试时。谢谢!
是的,你可以看到这个项目。它只有控制器测试...github.com/yogi21jan/spring-hateos-restassured-demo
【参考方案1】:
根据上面 Yogi 的评论,我使用 RestAssured 构建了一个测试套件,该套件直接使用在我的本地主机上运行的 API 端点。
以下书签帮助我理解 RestAssured:
为了大致了解如何使用 Rest Assured: https://semaphoreci.com/community/tutorials/testing-rest-endpoints-using-rest-assured
了解 API 的官方 RestAssured wiki:https://github.com/rest-assured/rest-assured/wiki/Usage#getting-response-data
在 Spring 项目中通过 Gradle 使用 RestAssured 的示例:https://www.blazemeter.com/blog/how-to-extract-values-when-api-testing-with-rest-assured
使用放心的基本身份验证:https://www.youtube.com/watch?v=PAyGma2OMFo
【讨论】:
以上是关于构建一个测试,该测试使用在 localhost 上运行的基于 Spring 的 REST API URL 进行测试的主要内容,如果未能解决你的问题,请参考以下文章
使用Windows 8.1在localhost上测试PHP的mail()函数[关闭]
在 Localhost 上测试 Google Analytics