Spring Boot 集成Swagger2进行Controller测试

女生的网名这么多〃 提交于 2020-02-07 02:17:28

最近在写Spring Boot 项目,希望用curl工具来测试Controller的性能及是否正确返回值,在查看了一些网上资料后,选择用Swagger来作为测试框架。

Swagger 是一款RESTFUL接口的、基于YAML、JSON语言的文档在线自动生成、代码自动生成的工具。

Swagger集成了curl工具,因此也可以用来方便地对Controller进行测试。

在Spring Boot 项目中集成Swagger也非常简单:

第一步,当然是添加依赖包了:

<!-- Swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

<dependency>
    <groupId>io.github.yidasanqian</groupId>
    <artifactId>json-util</artifactId>
    <version>1.0.0</version>
</dependency>

我用的是Swagger2,也是目前最新的版本。

第二步,在配置文件application.properties中加入下面一句:

spring.swagger2.enabled=true   //可以自由设置名称

这个在接下来的配置类中有用到。

第三步,编写配置类,在config包下编写:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Value(value = "${spring.swagger2.enabled}")   //上面的属性值
    private Boolean swaggerEnable;

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(swaggerEnable)
                .select()
                .apis(RequestHandlerSelectors.basePackage("cn.welfarezhu.billweb"))
                .paths(PathSelectors.any())
                .build();
    }

    //可以自由设置具体信息
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("测试接口文档")
                .description("Bill Manager System Test")
                .termsOfServiceUrl("http://www.welfareZhu.cn/")
                .version("1.0")
                .build();
    }
}

注意在basePackage()中设置自己的Controller包名,也可以是整个项目包名,Swagger会自动扫描。

好啦,现在当有一个完整的Controller及映射方法时,就可以用Swagger测试啦,下面是简单的测试:

首先是一个Model类:

@Data
public class TestUser {

    @Id
    private Integer id;
    @NotNull
    private String name;
    @Range(max = 1,min = 0)
    private Integer gender;
    private Date birthday;
    private String address;
}

Controller测试类:

@ResponseBody
@PostMapping("/userInfo")
public TestUser userInfo(@Valid TestUser user){
    return user;
}

启动服务,在浏览器地址栏输入http://localhost:8888/swagger-ui.html假设端口号为8888,显示如下页面:

在这里插入图片描述
就成功了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!