Spring Boot使用Swagger2自动化文档与测试

简介: 本文目录1. 场景2. Swagger2用了就是爽3. 具体实现3.1 导入依赖3.2 添加Swagger2配置类3.3 配置静态资源访问3.4 启动项目并进行查看、测试3.5 通过注解自动生成API文档4. 总结

1. 场景

兄弟们,上一篇咱们演示了SpringBoot开发Restful Web项目是多么的简单啊,简直就是简单到爆炸。反正老哥我用了SpringBoot之后,是再写不想写原始的带有一堆配置的Spring项目了。


谁还不想简简单单把事情办了,好有更多时间陪女朋友逛街买裙子啊?啥?你没女朋友,那你还不想有更多时间玩优秀么兄弟,别这么死脑筋行不?


说正经的,还是找个女朋友是正道!


好的,有了Restful之后,开发后端API接口确实足够简单了,但是如何测试捏。


难道为了测试,就得把前端工程实现了?那还叫啥前后端分离呢。


难道要单独使用工具测试,比如Postman,功能导师挺全面,但是Postman完全不知道我们的项目是咋回事啊,URL参数都得自己一个一个填,多麻烦啊。


既然我们的程序都摆在这了,各个接口URL地址、参数都是确定的,就不能自动生成可视化的测试界面么,让我们把参数填填发起测试就行。


2. Swagger2用了就是爽

当然行咧,用Swagger2就是咧。不光自动生成可视化测试,还能自动生成接口文档。


别人来测试的时候,直接看到文档描述,都不用来问你了。将程序设计的懒人原则发挥到极致。


此处提一点,程序开发就是要足够懒,才能让需求方感到:咋这么容易、这么好用捏。


3. 具体实现

好了,扯了一大堆,看看怎么实现。


3.1 导入依赖

我们还是使用上一章节中的Web项目进行演示,当然也可以使用任何的SpringBoot 2.x版本的项目进行添加Swagger2操作。


然后导入Swagger2相关的依赖,这样咱们的项目就能支持Swagger2咧,具体依赖项如下:


<!-- 添加swagger2相关功能 -->

   <dependency>

    <groupId>io.springfox</groupId>

    <artifactId>springfox-swagger2</artifactId>

    <version>2.9.2</version>

   </dependency>

   <!-- 添加swagger-ui相关功能 -->

   <dependency>

    <groupId>io.springfox</groupId>

    <artifactId>springfox-swagger-ui</artifactId>

    <version>2.9.2</version>

   </dependency>


TIPS:为啥用2.9.2版本?因为2.9.2是最新版本,炫酷呗!


3.2 添加Swagger2配置类

通过配置类配置Swagger2相关功能即可,相关要点咱都放注释中了。需要注意的是,不要感觉很难理解,这是人家定义好的类库,我们其实只要拿过来用就行了,Swagger2重点就是会使用就OK。


@Configuration // 告诉Spring容器,这个类是一个配置类,Spring容器得采用这个类的配置

@EnableSwagger2 // 启用Swagger2功能

public class Swagger2Config {

/**

 * 配置Swagger2相关的bean

 */

@Bean

   public Docket createRestApi() {

       return new Docket(DocumentationType.SWAGGER_2)

               .apiInfo(apiInfo())

               .select()

      .apis(RequestHandlerSelectors.basePackage("com"))//com包下所有API都交给Swagger2管理

               .paths(PathSelectors.any())

               .build();

   }

/**

 * 此处主要是API文档页面显示信息

 */

   private ApiInfo apiInfo() {

       return new ApiInfoBuilder()

               .title("演示项目API")   //标题

               .description("学习Swagger2的演示项目") //描述

               .termsOfServiceUrl("http://www.forwhatsogood.com") //服务网址,此处是我个人网站地址

               .version("1.0") //版本

               .build();

   }

}


3.3 配置静态资源访问

由于Swagger2相关API文档html/css/js页面,而SpringBoot 2.x默认会拦截静态资源,所以需要通过配置类配置下静态资源。


@Configuration

public class WebMvcConfig implements WebMvcConfigurer {

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

 // 允许一下目录静态资源访问

 registry.addResourceHandler("/statics/**").addResourceLocations("classpath:/statics/");

 registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");

 registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");

}

}



3.4 启动项目并进行查看、测试

启动项目,在之前的访问地址http://127.0.0.1:1007后面添加/swagger-ui.html,即访问http://127.0.0.1:1007/swagger-ui.html


显示如下,可见我们控制器重的API方法都被列出来了。

image.png

点击其中一个API,然后点击try it out,则可以注入参数自动执行并显示结果,如下图,大家自己试试就OK。

image.png
3.5 通过注解自动生成API文档

通过在控制器上添加注解,可以在Swagger页面生成文档内容,修改控制器代码如下:


@Api(tags = "博客API") // 类文档显示内容

@RestController // 通过该注解,第一将BlogController注册为控制器,第二将其中方法返回值转换为json

public class BlogController {

  @Autowired // 自动装配blogService

  private BlogService blogService;


  @ApiOperation(value = "根据id获取博客信息") // 接口文档显示内容

  @GetMapping("/blog/{id}")

  public BlogDo getOne(@PathVariable("id") long id) {

   return blogService.getBlogById(id);

  }


  @ApiOperation(value = "获取博客列表") // 接口文档显示内容

  @GetMapping("/blog")

  public List<BlogDo> getList() {

   return blogService.getBlogList();

  }


  @ApiOperation(value = "新增博客") // 接口文档显示内容

  @PostMapping("/blog")

  public void add(@RequestBody BlogDo blog) {

   blogService.addBlog(blog);

  }


  @ApiOperation(value = "根据id修改博客信息") // 接口文档显示内容

  @PutMapping("/blog/{id}")

  public void update(@PathVariable("id") long id, @RequestBody BlogDo blog) {

   // 修改指定id的博客信息

   blog.setId(id);

   blogService.updateBlog(blog);

  }


  @ApiOperation(value = "根据id删除博客") // 接口文档显示内容

  @DeleteMapping("/blog/{id}")

  public void delete(@PathVariable("id") long id) {

   blogService.deleteBlog(id);

  }

}

添加api注解后,Swagger页面显示如下,非常清晰简便的API文档,且可以直接点击调试,抓紧试试吧。

image.png

4. 总结

Swagger2测试要比写前端代码调试,或者写Java Http代码调试,或者通过Postman等工具调试都要方便。


因为不用写代码、可视化、参数自动生成,我们只需要在指定参数位置填写参数即可。


当然也不是万能的,比如批量测试、并发测试,这个工具是玩不了的。


所以Swagger的使用场景是作为API文档,或者开发完毕后的调整参数测试逻辑正确性。

相关文章
|
29天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
88 8
|
1月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
1月前
|
测试技术 持续交付
探索软件测试中的自动化测试策略
随着软件开发周期的加速和市场需求的不断增长,传统的手动软件测试方法已难以满足现代软件开发的高效性和准确性要求。本文旨在探讨自动化测试在软件测试中的重要性、实施策略及其对提高软件质量的影响。通过分析自动化测试的优势与挑战,以及提供实用的自动化测试工具和框架选择指南,旨在帮助读者理解并应用自动化测试以提升软件开发效率和产品质量。
|
1月前
|
机器学习/深度学习 人工智能 监控
软件测试中的自动化测试策略与最佳实践##
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将探讨自动化测试的重要性,分析不同类型的自动化测试工具和框架,并深入讨论实施自动化测试的最佳实践。通过案例研究和数据分析,我们将揭示如何有效整合自动化测试到软件开发生命周期中,以及它如何帮助团队提高测试效率和覆盖率。 ##
61 1
|
3天前
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
38 15
|
12天前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
121 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
2月前
|
Java 测试技术 API
探索软件测试中的自动化框架选择####
在当今快节奏的软件开发周期中,自动化测试已成为确保产品质量与加速产品迭代的关键策略。本文深入剖析了自动化测试的核心价值,对比分析了市场上主流的自动化测试框架,旨在为项目团队提供选型时的考量因素及实践指南,助力高效构建适应未来变化的自动化测试体系。 ####
|
21天前
|
机器学习/深度学习 人工智能 jenkins
探索软件测试中的自动化与持续集成
【10月更文挑战第21天】 在软件开发的生命周期中,软件测试扮演着至关重要的角色。随着技术的进步和开发模式的转变,自动化测试和持续集成已经成为提高软件质量和效率的关键手段。本文将深入探讨自动化测试和持续集成的概念、实施策略以及它们如何相互配合以优化软件开发流程。我们将通过分析实际案例,展示这些技术如何在实际项目中发挥作用,以及面临的挑战和解决方案。此外,文章还将讨论未来趋势,包括人工智能在测试领域的应用前景。
73 17
|
1月前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
1月前
|
安全 Java 测试技术
springboot之SpringBoot单元测试
本文介绍了Spring和Spring Boot项目的单元测试方法,包括使用`@RunWith(SpringJUnit4ClassRunner.class)`、`@WebAppConfiguration`等注解配置测试环境,利用`MockMvc`进行HTTP请求模拟测试,以及如何结合Spring Security进行安全相关的单元测试。Spring Boot中则推荐使用`@SpringBootTest`注解简化测试配置。

热门文章

最新文章