本次要聊的是怎么进行swager测试。
1、首先规划一下项目模块:
创建父模块和子模块来进行组合。
2、接下来进行common模块的定义。
@Data
@NoArgsConstructor
@AllArgsConstructor
public class HttpResp <T>{
private int code;
private String msg;
private T result;
private LocalDate time;
}
3、接下来进行依赖。
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
<version>4.0.0</version>
</dependency>
knife4j是一个集Swagger2和OpenAPI3为一体的增强解决方案,所以本次测试选择依赖的是knife4j.
以上显示为依赖成功。
接下来进行配置
knife4j:
enable: true #此项必配置,否则knife4j运行有问题
openapi
4、接下来进行项目的编码
TypeApp
@SpringBootApplication
public class TypeaApp {
public static void main(String[] args) {
SpringApplication.run(TypeaApp.class);
}
}
HttpResp
@Data
@NoArgsConstructor
@AllArgsConstructor
public class HttpResp <T>{
private int code;
private String msg;
private T result;
private LocalDate time;
}
Type
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Type {
private Integer id;
private String name;
private String createBy;
private Date createTime;
private Date updateTime;
}
TypeController
@Api(tags = "图书类型接口")
@RestController
@RequestMapping("/api/book")
@Slf4j
public class TypeController {
private int total=0;
@Autowired
private IBookService ibs;
@ApiOperation(value = "findAll",notes = "对所有图书类型查询")
@GetMapping("/findAll")
public HttpResp<Integer> findAll(){
// public HttpResp<List<Type>> findAll(){
// List<Type> list=new ArrayList<>(20);
// for (int i=1;i<=100;i++) {
// list.add(new Type(i,"type_"+i,"admin",new Date(),new Date()));
// }
// log.debug("查询所有图书类型:",list.size());
total=total+1;
log.debug("当前total-->:{}",total);
return new HttpResp<>(200,"success",total, LocalDate.now());
}
@ApiOperation(value = "addType",notes = "添加接口")
@ApiImplicitParams(
{
@ApiImplicitParam(name = "name",value = "输入图书类型",required = true)
}
)
@PostMapping("/addType")
public HttpResp<String> addType(String name){
log.debug("添加新的类型:{}",name);
return new HttpResp<>(200,"success",null,LocalDate.now());
}
@PostMapping("uploadExcel")
public HttpResp<String>uploadExcel(@RequestPart @RequestParam("excel")MultipartFile excel){
String originalFilename =excel.getOriginalFilename();
log.debug("上传文件名称:{}",originalFilename);
return new HttpResp<>(200,"success",originalFilename+"上传成功",LocalDate.now());
}
@ApiOperation(value = "qiang",notes = "抢购图书")
@PutMapping("/qiang")
public HttpResp<Integer>qiang(){
int retValue;
try {
retValue =ibs.qiangGou();
log.debug("剩余图书:{}",retValue);
}catch (Exception e){
return new HttpResp<>(500,"error",-1,LocalDate.now());
}
return new HttpResp<Integer>(200,"抢购成功",retValue,LocalDate.now());
}
}
bpokService
public interface IBookService {
int qiangGou();
}
bookServiceImpl
@Service
public class IBookServiceImpl implements IBookService {
int total=100;
@Override
public int qiangGou() {
if (total<0)throw new RuntimeException("对不起,书已售空");
total--;
return total;
}
}
application-dev.yml配置
server:
port: 9091
knife4j:
enable: true
logging:
level:
com.wnhz.book.bk: debug
application.yml配置
spring:
profiles:
active: dev
项目建立之后启动并且根据自己定的地址进入
localhost:自己的接口/doc.html
进入之后即可进入测试
后面也可以进行并发测试。
利用本程序可以进行多条信息同时发送来进行并发测试,当产生的数值有相同的时,即为发生了并发。
以上则是本次所要聊的内容。