Spring Boot 集成Swagger2进行Controller测试

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

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

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

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

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


<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger2artifactId>
    <version>2.9.2version>
dependency>

<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger-uiartifactId>
    <version>2.9.2version>
dependency>

<dependency>
    <groupId>io.github.yidasanqiangroupId>
    <artifactId>json-utilartifactId>
    <version>1.0.0version>
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,显示如下页面:

Spring Boot 集成Swagger2进行Controller测试_第1张图片
就成功了。

你可能感兴趣的:(Spring,学习之路)