1.侧栏菜单选择代码生成下的"Java":
点击代码区右上角的“代码魔法棒”图标,在弹出的确认面板中,可选择生成Quarkus风格代码或SpringBoot风格的代码,Grpc通讯是用于生成多微服务代码时的选项,此处不展开讲解。
2.一秒生成完整的Java项目工程代码,如下图所示:
下面摘出该项目工程中的订单相关代码。接口层代码如下:
点击查看代码- package com.aigcoder.demo.api;
- import com.aigcoder.demo.common.PageView;
- import com.aigcoder.demo.common.ValidateUtils;
- import com.aigcoder.demo.dto.SearchDTO;
- import com.aigcoder.demo.dto.OrderCreateDTO;
- import com.aigcoder.demo.dto.OrderModifyDTO;
- import com.aigcoder.demo.domain.Order;
- import com.aigcoder.demo.service.OrderService;
- import com.aigcoder.demo.vo.OrderVO;
- import jakarta.annotation.security.PermitAll;
- import jakarta.annotation.security.RolesAllowed;
- import jakarta.inject.Inject;
- import jakarta.ws.rs.*;
- import jakarta.ws.rs.core.MediaType;
- import jakarta.ws.rs.core.Response;
- import org.eclipse.microprofile.openapi.annotations.Operation;
- import org.eclipse.microprofile.openapi.annotations.enums.ParameterIn;
- import org.eclipse.microprofile.openapi.annotations.parameters.Parameter;
- import org.eclipse.microprofile.openapi.annotations.parameters.Parameters;
- import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
- import org.eclipse.microprofile.openapi.annotations.tags.Tag;
- import org.jboss.logging.Logger;
- /**
- * 领域类 Order(订单) 的资源访问层
- * @author 极客学院
- * @date 2025/03/20
- */
- @Path("/demo/order")
- @Produces(MediaType.APPLICATION_JSON)
- @Tag(name = "OrderResource", description = "领域类 Order(订单) 的资源访问层")
- public class OrderResource {
- private static final Logger LOGGER = Logger.getLogger(OrderResource.class);
- @Inject
- OrderService orderService;
- /**
- * 提交新增订单的请求
- * POST: /demo/order/user/create
- * @param dto 新增订单的表单校验DTO
- * @return 反馈操作结果状态
- */
- @POST
- @Path("/user/create")
- @Consumes(MediaType.APPLICATION_JSON)
- @RolesAllowed("user")
- @APIResponse(responseCode = "201", description = "操作成功")
- @APIResponse(responseCode = "401", description = "您未通过身份认证或Token令牌已过期")
- @APIResponse(responseCode = "422", description = "表单校验失败")
- @Operation(summary = "提交新增订单的请求", description = "POST: /demo/order/user/create")
- public Response create(OrderCreateDTO dto) {
- ValidateUtils.check(dto, LOGGER);
- orderService.create(dto);
- return Response.status(201).build();
- }
- /**
- * 提交修改订单的请求
- * PUT: /demo/order/user/modify
- * @param dto 修改订单的表单校验DTO
- * @return 反馈操作结果状态
- */
- @PUT
- @Path("/user/modify")
- @Consumes(MediaType.APPLICATION_JSON)
- @RolesAllowed("user")
- @APIResponse(responseCode = "200", description = "修改成功")
- @APIResponse(responseCode = "401", description = "您未通过身份认证或Token令牌已过期")
- @APIResponse(responseCode = "404", description = "未找到该数据")
- @APIResponse(responseCode = "422", description = "表单校验失败")
- @Operation(summary = "提交修改订单的请求", description = "PUT: /demo/order/user/modify")
- public Response modify(OrderModifyDTO dto) {
- ValidateUtils.check(dto, LOGGER);
- orderService.modify(dto);
- return Response.status(200).build();
- }
- /**
- * 显示一条订单的信息详情
- * GET: /demo/order/user/detail/{orderId}
- * @param orderId 订单ID
- * @return 显示一条订单的信息详情
- */
- @GET
- @Path("/user/detail/{orderId}")
- @RolesAllowed("user")
- @Parameters({
- @Parameter(name = "orderId", description = "订单ID", example = "1", in = ParameterIn.PATH),
- })
- @APIResponse(responseCode = "200", description = "查询成功")
- @APIResponse(responseCode = "401", description = "您未通过身份认证或Token令牌已过期")
- @APIResponse(responseCode = "404", description = "未找到该数据")
- @Operation(summary = "显示一条订单的信息详情", description = "GET: /demo/order/user/detail/{orderId}")
- public Order detail(@PathParam("orderId") Long orderId) {
- return orderService.detail(orderId);
- }
- /**
- * 订单列表
- * GET: /demo/order/user/list
- * @param dto 搜索的DTO数据传输对象
- * @return 订单列表
- */
- @GET
- @Path("/user/list")
- @RolesAllowed("user")
- @APIResponse(responseCode = "200", description = "查询成功")
- @APIResponse(responseCode = "401", description = "您未通过身份认证或Token令牌已过期")
- @Operation(summary = "订单列表", description = "GET: /demo/order/user/list")
- public PageView<OrderVO> list(@BeanParam SearchDTO dto) {
- return orderService.list(dto);
- }
- /**
- * 删除一条订单信息(非物理删除)
- * DELETE: /demo/order/user/remove/{orderId}
- * @param orderId 订单ID
- * @return 反馈操作结果状态
- */
- @DELETE
- @Path("/user/remove/{orderId}")
- @RolesAllowed("user")
- @Parameters({
- @Parameter(name = "orderId", description = "订单ID", example = "1", in = ParameterIn.PATH),
- })
- @APIResponse(responseCode = "204", description = "删除成功")
- @APIResponse(responseCode = "401", description = "您未通过身份认证或Token令牌已过期")
- @APIResponse(responseCode = "404", description = "未找到该数据")
- @Operation(summary = "删除一条订单信息(非物理删除)", description = "DELETE: /demo/order/user/remove/{orderId}")
- public Response remove(@PathParam("orderId") Long orderId) {
- orderService.remove(orderId);
- return Response.status(204).build();
- }
- }
复制代码 服务层代码:点击查看代码- package com.aigcoder.demo.service;
- import cn.hutool.core.bean.BeanUtil;
- import com.aigcoder.demo.common.PageView;
- import com.aigcoder.demo.common.BusinessException;
- import com.aigcoder.demo.common.ErrorCode;
- import com.aigcoder.demo.domain.Order;
- import com.aigcoder.demo.domain.User;
- import com.aigcoder.demo.dto.SearchDTO;
- import com.aigcoder.demo.dto.OrderCreateDTO;
- import com.aigcoder.demo.dto.OrderModifyDTO;
- import com.aigcoder.demo.vo.OrderVO;
- import io.quarkus.hibernate.orm.panache.PanacheQuery;
- import io.quarkus.panache.common.Page;
- import io.quarkus.panache.common.Parameters;
- import io.quarkus.panache.common.Sort;
- import jakarta.enterprise.context.ApplicationScoped;
- import jakarta.inject.Inject;
- import jakarta.transaction.Transactional;
- import jakarta.ws.rs.WebApplicationException;
- import org.jboss.logging.Logger;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- /**
- * 资源类OrderResource的服务层
- * @author 极客学院
- * @date 2025/03/20
- */
- @ApplicationScoped
- public class OrderService {
- private static final Logger LOGGER = Logger.getLogger(OrderService.class);
- @Inject
- UserService userService;
- @Inject
- RedisService redisService;
- /**
- * 提交新增订单的请求
- * @param dto 新增订单的表单校验DTO
- */
- @Transactional
- public void create(OrderCreateDTO dto) {
- Order order = new Order();
- BeanUtil.copyProperties(dto, order);
- User user = userService.getUserInfo();
- order.creatorId = user.userId;
- order.creator = user.nickname;
- order.persist();
- }
- /**
- * 提交修改订单的请求
- * @param dto 修改订单的表单校验DTO
- */
- @Transactional
- public void modify(OrderModifyDTO dto) {
- Order o = Order.findById(dto.orderId);
- if(o == null){
- String info = "订单不存在。ID:" + dto.orderId;
- LOGGER.error(info);
- throw new WebApplicationException(info, 404);
- }
- if(dto.orderNum !=null && !dto.orderNum.equals(o.orderNum)) {
- o.orderNum = dto.orderNum;
- }
- if(dto.amount !=null && !dto.amount.equals(o.amount)) {
- o.amount = dto.amount;
- }
- if(dto.memo !=null && !dto.memo.equals(o.memo)) {
- o.memo = dto.memo;
- }
- User user = userService.getUserInfo();
- o.lastModificationTime = new Date();
- o.lastModifierId = user.userId;
- o.lastModifier = user.nickname;
- redisService.del("Order." + o.orderId);
- }
- /**
- * 显示一条订单的信息详情
- * @param orderId 订单ID
- * @return 显示一条订单的信息详情
- */
- public Order detail(Long orderId) {
- Order o = redisService.get("Order." + orderId, Order.class);
- if(o!=null){
- return o;
- }
- o = Order.findById(orderId);
- if(o==null){
- String info = "订单不存在。ID:" + orderId;
- LOGGER.error(info);
- throw new WebApplicationException(info, 404);
- }
- redisService.set("Order." + o.orderId, o);
- return o;
- }
- /**
- * 订单列表
- * @param dto 搜索的DTO数据传输对象
- * @return 订单列表
- */
- public PageView<OrderVO> list(SearchDTO dto) {
- PanacheQuery<Order> orderPanacheQuery;
- if(dto.keyword!=null){
- String keyword = dto.keyword.trim();
- orderPanacheQuery = Order.find("(orderNum like :orderNum or memo like :memo) and isDeleted = false",
- (dto.sortBy==null ? Sort.by("orderId", Sort.Direction.Descending) : Sort.by(dto.sortBy)),
- Parameters.with("orderNum", "%"+keyword+"%").and("memo", "%"+keyword+"%"));
- }else{
- orderPanacheQuery = Order.find("isDeleted = false",
- (dto.sortBy==null ? Sort.by("orderId", Sort.Direction.Descending) : Sort.by(dto.sortBy)));
- }
- List<Order> list = orderPanacheQuery.page(Page.of(dto.page, dto.size)).list();
- List<OrderVO> voList = new ArrayList<>();
- for (Order order:
- list) {
- OrderVO orderVO = new OrderVO();
- BeanUtil.copyProperties(order, orderVO);
- voList.add(orderVO);
- }
- PageView<OrderVO> pageView = new PageView<>();
- pageView.list = voList;
- pageView.total = orderPanacheQuery.count();
- return pageView;
- }
- /**
- * 删除一条订单信息(非物理删除)
- * @param orderId 订单ID
- */
- @Transactional
- public void remove(Long orderId) {
- Order o = Order.findById(orderId);
- if(o == null){
- String info = "订单不存在。ID:" + orderId;
- LOGGER.error(info);
- throw new WebApplicationException(info, 404);
- }
- User user = userService.getUserInfo();
- o.isDeleted = true;
- o.deletionTime = new Date();
- o.deleterId = user.userId;
- o.deleter = user.nickname;
- redisService.del("Order." + o.orderId);
- }
- }
复制代码 领域类层代码:
点击查看代码- package com.aigcoder.demo.domain;
- import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
- import jakarta.persistence.*;
- import org.eclipse.microprofile.openapi.annotations.media.Schema;
- import org.hibernate.annotations.DynamicUpdate;
- import java.util.Date;
- /**
- * 订单领域类
- * @author 极客学院
- * @date 2025/03/20
- */
- @Entity
- @DynamicUpdate()
- @Table(name = "tbl_order")
- @Schema(description = "订单")
- public class Order extends PanacheEntityBase {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "id")
- @Schema(description = "订单ID", example = "1")
- public Long orderId;
- @Column(nullable = false, name = "order_num", length = 50)
- @Schema(description = "订单号", example = "4624849630")
- public String orderNum;
- @Column(nullable = false, name = "amount")
- @Schema(description = "订单金额", example = "80.16")
- public BigDecimal amount;
- @Column(nullable = false, name = "memo", length = 50)
- @Schema(description = "订单描述", example = "请加急发货急用。")
- public String memo;
- @Column(nullable = false, name = "creation_time", updatable = false)
- @Schema(description = "创建时间", example = "2025-03-20 10:18:18")
- public Date creationTime = new Date();
- @Column(nullable = false, name = "creator_id", updatable = false)
- @Schema(description = "创建者ID", example = "1")
- public Long creatorId;
- @Column(nullable = false, name = "creator", updatable = false)
- @Schema(description = "创建者", example = "AI极客")
- public String creator;
- @Column(name = "last_modification_time")
- @Schema(description = "最近修改时间", example = "2025-03-20 10:28:28")
- public Date lastModificationTime;
- @Column(name = "last_modifier_id")
- @Schema(description = "最近修改者ID", example = "1")
- public Long lastModifierId;
- @Column(name = "last_modifier")
- @Schema(description = "最近修改者", example = "AI极客")
- public String lastModifier;
- @Column(nullable = false, name = "is_deleted")
- @Schema(description = "已删除", example = "true")
- public Boolean isDeleted = false;
- @Column(name = "deletion_time")
- @Schema(description = "删除时间", example = "2025-03-20 10:38:38")
- public Date deletionTime;
- @Column(name = "deleter_id")
- @Schema(description = "删除者ID", example = "1")
- public Long deleterId;
- @Column(name = "deleter")
- @Schema(description = "删除者", example = "AI极客")
- public String deleter;
- /**
- * 空构造函数
- */
- public Order(){
- super();
- }
- /**
- *带参构造函数
- */
- public Order(String orderNum, BigDecimal amount, String memo, Date creationTime, Long creatorId, String creator, Date lastModificationTime, Long lastModifierId, String lastModifier, Boolean isDeleted, Date deletionTime, Long deleterId, String deleter){
- super();
- this.orderNum = orderNum;
- this.amount = amount;
- this.memo = memo;
- this.creationTime = creationTime;
- this.creatorId = creatorId;
- this.creator = creator;
- this.lastModificationTime = lastModificationTime;
- this.lastModifierId = lastModifierId;
- this.lastModifier = lastModifier;
- this.isDeleted = isDeleted;
- this.deleterId = deleterId;
- this.deletionTime = deletionTime;
- this.deleter = deleter;
- }
- }
复制代码 DTO类代码:
点击查看代码- package com.aigcoder.demo.dto;
- import jakarta.validation.constraints.*;
- import org.hibernate.validator.constraints.Length;
- import org.hibernate.validator.constraints.URL;
- import org.eclipse.microprofile.openapi.annotations.media.Schema;
- /**
- * 新增订单的表单校验DTO
- * @author 极客学院
- * @date 2025/03/20
- */
- @Schema(description = "新增订单的表单校验DTO")
- public class OrderCreateDTO {
- @NotBlank(message = "订单号:不能为空")
- @Length(max = 50, message = "订单号:最长不能超过50个字符")
- @Schema(description = "订单号:不能为空,最长不能超过50个字符", required = true, example = "4624849630")
- public String orderNum;
- @NotNull(message = "订单金额:不能为null")
- @DecimalMin(value = "0.00", message = "订单金额:必须大于或等于0.00")
- @DecimalMax(value = "100.00", message = "订单金额:必须小于或等于100.00")
- @Digits(integer = 10, fraction = 2, message = "订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内)")
- @Schema(description = "订单金额:不能为null,必须大于或等于0.00,必须小于或等于100.00,数字的值只允许在10位整数和2位小数范围内", required = true, example = "80.16")
- public BigDecimal amount;
- @NotBlank(message = "订单描述:不能为空")
- @Length(max = 50, message = "订单描述:最长不能超过50个字符")
- @Schema(description = "订单描述:不能为空,最长不能超过50个字符", required = true, example = "请加急发货急用。")
- public String memo;
- }
复制代码 点击查看代码- package com.aigcoder.demo.dto;
- import jakarta.validation.constraints.*;
- import org.hibernate.validator.constraints.Length;
- import org.hibernate.validator.constraints.URL;
- import org.eclipse.microprofile.openapi.annotations.media.Schema;
- /**
- * 修改订单的表单校验DTO
- * @author 极客学院
- * @date 2025/03/20
- */
- @Schema(description = "修改订单的表单校验DTO")
- public class OrderModifyDTO {
- @NotNull(message = "订单ID:不能为null")
- @Min(value = 1, message = "订单ID:最小不能小于1")
- @Schema(description = "订单ID:不能为null,最小不能小于1", required = true, example = "1")
- public Long orderId;
- @NotBlank(message = "订单号:不能为空")
- @Length(max = 50, message = "订单号:最长不能超过50个字符")
- @Schema(description = "订单号:不能为空,最长不能超过50个字符", required = true, example = "4624849630")
- public String orderNum;
- @NotNull(message = "订单金额:不能为null")
- @DecimalMin(value = "0.00", message = "订单金额:必须大于或等于0.00")
- @DecimalMax(value = "100.00", message = "订单金额:必须小于或等于100.00")
- @Digits(integer = 10, fraction = 2, message = "订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内)")
- @Schema(description = "订单金额:不能为null,必须大于或等于0.00,必须小于或等于100.00,数字的值只允许在10位整数和2位小数范围内", required = true, example = "80.16")
- public BigDecimal amount;
- @NotBlank(message = "订单描述:不能为空")
- @Length(max = 50, message = "订单描述:最长不能超过50个字符")
- @Schema(description = "订单描述:不能为空,最长不能超过50个字符", required = true, example = "请加急发货急用。")
- public String memo;
- }
复制代码 VO类代码:
点击查看代码- package com.aigcoder.demo.vo;
- import org.eclipse.microprofile.openapi.annotations.media.Schema;
- /**
- * 订单信息实体
- * @author 极客学院
- * @date 2025/03/20
- */
- @Schema(description = "订单信息实体")
- public class OrderVO {
- @Schema(description = "订单ID", example = "1")
- public Long orderId;
- @Schema(description = "订单号", example = "4624849630")
- public String orderNum;
- @Schema(description = "订单金额", example = "80.16")
- public BigDecimal amount;
- @Schema(description = "订单描述", example = "请加急发货急用。")
- public String memo;
- }
-
复制代码 订单类自动测试代码:
点击查看代码- package com.aigcoder.demo;
- import io.quarkus.test.junit.QuarkusTest;
- import jdk.jfr.Description;
- import org.hamcrest.CoreMatchers;
- import org.junit.jupiter.api.*;
- import jakarta.inject.Inject;
- import org.eclipse.microprofile.config.inject.ConfigProperty;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import static io.restassured.RestAssured.given;
- import static io.restassured.http.ContentType.JSON;
- import static org.hamcrest.CoreMatchers.containsString;
- import static org.hamcrest.Matchers.containsInAnyOrder;
- import static org.hamcrest.Matchers.is;
- /**
- * API资源(OrderResource)的接口测试
- * @author 极客学院
- * @date 2025/03/20
- */
- @QuarkusTest
- @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
- public class OrderResourceTest {
- @ConfigProperty(name = "api_gateway")
- String API_GATEWAY;
- @Inject
- TokenUtils tokenUtils;
- ExpectedDTO expectedDTO;
- List<ExpectedDTO> expectedDTOS;
- HashMap<String, String> map;
- static List<HashMap<String, String>> list;
- static String access_token = "";
- /**
- * 测试预备数据
- */
- public void setPrepareData(){
- }
- @Test
- @Description("测试:提交新增订单的请求")
- @DisplayName("测试:提交新增订单的请求")
- @Order(1)
- public void testCreate() {
- if(access_token.isEmpty()){
- access_token = tokenUtils.getAccessToken();
- }
- // 创建测试预备数据
- this.setPrepareData();
- /*
- * =================== 合法用例 ===================
- */
- list = new ArrayList<>();
- // 合法用例
- map = new HashMap<>();
- map.put("orderNum", "4624849630");
- map.put("amount", "80.16");
- map.put("memo", "请加急发货急用。");
- list.add(map);
- // 合法用例
- map = new HashMap<>();
- map.put("orderNum", "1454638995");
- map.put("amount", "88.75");
- map.put("memo", "玉依合役况岔节句呈彻状刮许治苏。母建拥怜购寿园极诗针侧纱吩乒召府纤。帆货泼坝制存陆希吓厌帘自。权自奉异驳阿求房岸丧炊务仰邻奔冬左呜治。抹享宏贪败吃齐北肃迁爸。团呈泼冲更戏斥明层由的伞。");
- list.add(map);
- // 合法用例
- map = new HashMap<>();
- map.put("orderNum", "2151384176");
- map.put("amount", "2.82");
- map.put("memo", "姐肯织导正屈拢私因抗图臣。市员局店吐妹杀台券刘乓民迟。所命技现灶际围皮驼过打加者刻他抢。阶国妙龙坡启诉匠厌角圣畅。伯本围同迎厉丢压争羊乎份呈抓卵步汪极灰册。");
- list.add(map);
- for (int i = 0; i < list.size(); i++) {
- given().
- contentType(JSON).
- body(list.get(i)).
- header("Authorization", "Bearer " + access_token).
- when().
- //log().all().
- post(API_GATEWAY + "/demo/order/user/create").
- then().
- log().all().
- statusCode(201);
- }
- /*
- * =================== 非法用例(数据校验不合格) ===================
- */
- expectedDTOS = new ArrayList<>();
- // 订单号:不能为空 [非法值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderNum", "");
- map.put("amount", "80.16");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单号:不能为空";
- expectedDTOS.add(expectedDTO);
- // 订单号:最长不能超过50个字符 [非法边界值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderNum", "qgdmdfydffnyfhnnmfajyigrnqutpkeshkeaxblpmwhqqkpwqnt");
- map.put("amount", "80.16");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单号:最长不能超过50个字符";
- expectedDTOS.add(expectedDTO);
- // 订单金额:不能为null [非法值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderNum", "4624849630");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单金额:不能为null";
- expectedDTOS.add(expectedDTO);
- // 订单金额:必须大于或等于0.00 [非法边界值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderNum", "4624849630");
- map.put("amount", "-1.0");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单金额:必须大于或等于0.00";
- expectedDTOS.add(expectedDTO);
- // 订单金额:必须小于或等于100.00 [非法边界值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderNum", "4624849630");
- map.put("amount", "101.0");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单金额:必须小于或等于100.00";
- expectedDTOS.add(expectedDTO);
- // 订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内) [非法值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderNum", "4624849630");
- map.put("amount", "10000000000.00");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内)";
- expectedDTOS.add(expectedDTO);
- // 订单描述:不能为空 [非法值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderNum", "4624849630");
- map.put("amount", "80.16");
- map.put("memo", "");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单描述:不能为空";
- expectedDTOS.add(expectedDTO);
- // 订单描述:最长不能超过50个字符 [非法边界值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderNum", "4624849630");
- map.put("amount", "80.16");
- map.put("memo", "hsglmzxvippqgthsggomgqvdeawiouzttdqotedmfuhgvdssodf");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单描述:最长不能超过50个字符";
- expectedDTOS.add(expectedDTO);
- for (ExpectedDTO item:
- expectedDTOS) {
- given().
- contentType(JSON).
- body(item.jsonParam).
- header("Authorization", "Bearer " + access_token).
- when().
- //log().all().
- post(API_GATEWAY + "/demo/order/user/create").
- then().
- log().all().
- statusCode(422).
- body(containsString(item.expected));
- }
- /*
- * =================== 非法用例(业务错误) ===================
- */
- // 非法用例:您未通过身份认证或Token令牌已过期
- map = new HashMap<>();
- map.put("orderNum", "4624849630");
- map.put("amount", "80.16");
- map.put("memo", "请加急发货急用。");
- given().
- contentType(JSON).
- body(map).
- header("Authorization","Bearer " + access_token + "error").
- when().
- //log().all().
- post(API_GATEWAY + "/demo/order/user/create").
- then().
- log().all().
- statusCode(401);
- }
- @Test
- @Description("测试:订单列表")
- @DisplayName("测试:订单列表")
- @Order(2)
- public void testList() {
- if(access_token.isEmpty()){
- access_token = tokenUtils.getAccessToken();
- }
- // 合法用例:自然搜索
- map = new HashMap<>();
- given().
- queryParams(map).
- header("Authorization","Bearer " + access_token).
- when().
- //log().all().
- get(API_GATEWAY + "/demo/order/user/list").
- then().
- log().all().
- statusCode(200).
- body("total", is(3));
- // 合法用例:关键字搜索
- map = new HashMap<>();
- map.put("keyword", "");
- map.put("page", "0");
- map.put("size", "10");
- map.put("sortBy", "orderId");
- given().
- queryParams(map).
- header("Authorization","Bearer " + access_token).
- when().
- //log().all().
- get(API_GATEWAY + "/demo/order/user/list").
- then().
- log().all().
- statusCode(200).
- body("total", is(3));
- // 非法用例:您未通过身份认证或Token令牌已过期
- map = new HashMap<>();
- given().
- queryParams(map).
- header("Authorization","Bearer " + access_token + "error").
- when().
- //log().all().
- get(API_GATEWAY + "/demo/order/user/list").
- then().
- log().all().
- statusCode(401);
- }
- @Test
- @Description("测试:显示一条订单的信息详情")
- @DisplayName("测试:显示一条订单的信息详情")
- @Order(3)
- public void testDetail() {
- if(access_token.isEmpty()){
- access_token = tokenUtils.getAccessToken();
- }
- // 合法用例
- map = new HashMap<>();
- given().
- pathParam("orderId", "1").
- queryParams(map).
- header("Authorization","Bearer " + access_token).
- when().
- //log().all().
- get(API_GATEWAY + "/demo/order/user/detail/{orderId}").
- then().
- log().all().
- statusCode(200);
- // 非法用例:您未通过身份认证或Token令牌已过期
- map = new HashMap<>();
- given().
- pathParam("orderId", "1").
- queryParams(map).
- header("Authorization","Bearer " + access_token + "error").
- when().
- //log().all().
- get(API_GATEWAY + "/demo/order/user/detail/{orderId}").
- then().
- log().all().
- statusCode(401);
- // 非法用例:404错误,未找到该数据
- map = new HashMap<>();
- given().
- // TODO 修正参数值
- pathParam("orderId", "100").
- queryParams(map).
- header("Authorization","Bearer " + access_token).
- when().
- //log().all().
- get(API_GATEWAY + "/demo/order/user/detail/{orderId}").
- then().
- log().all().
- statusCode(404);
- }
- @Test
- @Description("测试:提交修改订单的请求")
- @DisplayName("测试:提交修改订单的请求")
- @Order(4)
- public void testModify() {
- if(access_token.isEmpty()){
- access_token = tokenUtils.getAccessToken();
- }
- /*
- * =================== 合法用例 ===================
- */
- // 合法用例
- map = new HashMap<>();
- map.put("orderId", "1");
- map.put("orderNum", "4624849630");
- map.put("amount", "80.16");
- map.put("memo", "请加急发货急用。");
- given().
- contentType(JSON).
- body(map).
- header("Authorization","Bearer " + access_token).
- when().
- //log().all().
- put(API_GATEWAY + "/demo/order/user/modify").
- then().
- log().all().
- statusCode(200);
- /*
- * =================== 非法用例(数据校验不合格) ===================
- */
- expectedDTOS = new ArrayList<>();
- // 订单ID:不能为null [非法值:主键ID故意不传参]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderNum", "4624849630");
- map.put("amount", "80.16");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单ID:不能为null";
- expectedDTOS.add(expectedDTO);
- // 订单ID:最小不能小于1 [非法边界值,低于允许的最小值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderId", "0");
- map.put("orderNum", "4624849630");
- map.put("amount", "80.16");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单ID:最小不能小于1";
- expectedDTOS.add(expectedDTO);
- // 订单号:不能为空 [非法值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderId", "1");
- map.put("orderNum", "");
- map.put("amount", "80.16");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单号:不能为空";
- expectedDTOS.add(expectedDTO);
- // 订单号:最长不能超过50个字符 [非法边界值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderId", "1");
- map.put("orderNum", "tkrkpvyxdylexcpaamzzjymmrbtjootzlnjrhnoqkbkxdgnqusi");
- map.put("amount", "80.16");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单号:最长不能超过50个字符";
- expectedDTOS.add(expectedDTO);
- // 订单金额:不能为null [非法值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderId", "1");
- map.put("orderNum", "4624849630");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单金额:不能为null";
- expectedDTOS.add(expectedDTO);
- // 订单金额:必须大于或等于0.00 [非法边界值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderId", "1");
- map.put("orderNum", "4624849630");
- map.put("amount", "-1.0");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单金额:必须大于或等于0.00";
- expectedDTOS.add(expectedDTO);
- // 订单金额:必须小于或等于100.00 [非法边界值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderId", "1");
- map.put("orderNum", "4624849630");
- map.put("amount", "101.0");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单金额:必须小于或等于100.00";
- expectedDTOS.add(expectedDTO);
- // 订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内) [非法值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderId", "1");
- map.put("orderNum", "4624849630");
- map.put("amount", "10000000000.00");
- map.put("memo", "请加急发货急用。");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内)";
- expectedDTOS.add(expectedDTO);
- // 订单描述:不能为空 [非法值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderId", "1");
- map.put("orderNum", "4624849630");
- map.put("amount", "80.16");
- map.put("memo", "");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单描述:不能为空";
- expectedDTOS.add(expectedDTO);
- // 订单描述:最长不能超过50个字符 [非法边界值]
- expectedDTO = new ExpectedDTO();
- map = new HashMap<>();
- map.put("orderId", "1");
- map.put("orderNum", "4624849630");
- map.put("amount", "80.16");
- map.put("memo", "txnmunhpmnhtvoyfeebxjnncnvmuvbpmrjzqoanaigvtjjsvzwo");
- expectedDTO.jsonParam = map;
- expectedDTO.expected = "订单描述:最长不能超过50个字符";
- expectedDTOS.add(expectedDTO);
- for (ExpectedDTO item:
- expectedDTOS) {
- given().
- contentType(JSON).
- body(item.jsonParam).
- header("Authorization", "Bearer " + access_token).
- when().
- //log().all().
- put(API_GATEWAY + "/demo/order/user/modify").
- then().
- log().all().
- statusCode(422).
- body(containsString(item.expected));
- }
- /*
- * =================== 非法用例(业务错误) ===================
- */
- // 非法用例:您未通过身份认证或Token令牌已过期
- map = new HashMap<>();
- map.put("orderId", "1");
- map.put("orderNum", "4624849630");
- map.put("amount", "80.16");
- map.put("memo", "请加急发货急用。");
- given().
- contentType(JSON).
- body(map).
- header("Authorization","Bearer " + access_token + "error").
- when().
- //log().all().
- put(API_GATEWAY + "/demo/order/user/modify").
- then().
- log().all().
- statusCode(401);
- // 非法用例:404错误,未找到该数据
- map = new HashMap<>();
- map.put("orderId", "100");
- map.put("orderNum", "4624849630");
- map.put("amount", "80.16");
- map.put("memo", "请加急发货急用。");
- given().
- contentType(JSON).
- body(map).
- header("Authorization","Bearer " + access_token).
- when().
- //log().all().
- put(API_GATEWAY + "/demo/order/user/modify").
- then().
- log().all().
- statusCode(404);
- }
- @Test
- @Description("测试:删除一条订单信息(非物理删除)")
- @DisplayName("测试:删除一条订单信息(非物理删除)")
- @Order(5)
- public void testRemove() {
- if(access_token.isEmpty()){
- access_token = tokenUtils.getAccessToken();
- }
- // 非法用例:您未通过身份认证或Token令牌已过期
- map = new HashMap<>();
- given().
- pathParam("orderId", "1").
- queryParams(map).
- header("Authorization","Bearer " + access_token + "error").
- when().
- //log().all().
- delete(API_GATEWAY + "/demo/order/user/remove/{orderId}").
- then().
- log().all().
- statusCode(401);
- // 非法用例:404错误,未找到该数据
- map = new HashMap<>();
- given().
- // TODO 修正参数值
- pathParam("orderId", "100").
- queryParams(map).
- header("Authorization","Bearer " + access_token).
- when().
- //log().all().
- delete(API_GATEWAY + "/demo/order/user/remove/{orderId}").
- then().
- log().all().
- statusCode(404);
- // 合法用例:删除成功
- map = new HashMap<>();
- given().
- pathParam("orderId", "1").
- queryParams(map).
- header("Authorization","Bearer " + access_token).
- when().
- //log().all().
- delete(API_GATEWAY + "/demo/order/user/remove/{orderId}").
- then().
- log().all().
- statusCode(204);
- }
- }
复制代码 详细操作可去官网免费体验!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |