test(qms-sampling-plan): 完善抽样方案接口测试用例及相关代码
- QmsSamplingPlanAddQO中SamplingPlanInspectionQO类添加链式调用支持 - 测试类QmsSamplingPlanApiTest完善注释和常量格式 - 引入RandomUtil和DateTimeUtil生成动态抽样方案名称 - 调整抽样方案构造逻辑,大幅简化字码列表只包含"A" - 补充字码矩阵数据,增加多个检查项矩阵配置 - 扩充抽样方案检验列表,添加多个InspectionDictionaryItemId项 - 统一post接口调用格式,修正断言提示信息文案 - 删除冗余AQL优先值,优化构造流程和代码清晰度
This commit is contained in:
parent
5576c446ce
commit
9c32bbb9ed
|
|
@ -2,17 +2,20 @@ package com.nflg.qms.admin;
|
||||||
|
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.lang.TypeReference;
|
import cn.hutool.core.lang.TypeReference;
|
||||||
|
import cn.hutool.core.util.RandomUtil;
|
||||||
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpRequest;
|
||||||
import cn.hutool.http.HttpResponse;
|
import cn.hutool.http.HttpResponse;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.nflg.wms.common.pojo.ApiResult;
|
import com.nflg.wms.common.pojo.ApiResult;
|
||||||
import com.nflg.wms.common.pojo.qo.QmsSamplingPlanAddQO;
|
import com.nflg.wms.common.pojo.qo.QmsSamplingPlanAddQO;
|
||||||
|
import com.nflg.wms.common.util.DateTimeUtil;
|
||||||
import org.junit.jupiter.api.MethodOrderer;
|
import org.junit.jupiter.api.MethodOrderer;
|
||||||
import org.junit.jupiter.api.Order;
|
import org.junit.jupiter.api.Order;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.TestMethodOrder;
|
import org.junit.jupiter.api.TestMethodOrder;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -28,13 +31,19 @@ import java.util.List;
|
||||||
public class QmsSamplingPlanApiTest {
|
public class QmsSamplingPlanApiTest {
|
||||||
|
|
||||||
// ===================== 配置区 =====================
|
// ===================== 配置区 =====================
|
||||||
/** 服务地址 */
|
/**
|
||||||
|
* 服务地址
|
||||||
|
*/
|
||||||
private static final String BASE_URL = "http://localhost:8105";
|
private static final String BASE_URL = "http://localhost:8105";
|
||||||
/** 当前登录用户的 token */
|
/**
|
||||||
private static final String TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsInJuU3RyIjoidVFwSWM2R3RJeUoxcFNSczBadzJzb1hvMUZLZXB3czkiLCJuYW1lIjoi6LaF57qn566h55CG5ZGYIiwiY29kZSI6ImFkbWluIiwicm9sZXMiOlsiU3VwZXJBZG1pbiJdLCJ0eXBlIjoxfQ.FtQ2uVwvuxsjAFbXnB006hV1pODtRhZT0z_9nfuR0So";
|
* 当前登录用户的 token
|
||||||
|
*/
|
||||||
|
private static final String TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsInJuU3RyIjoiVVJ0dG9HbTlqMllaRWh0dTV6V1NaUldXZEtxN2VZMmYiLCJuYW1lIjoi6LaF57qn566h55CG5ZGYIiwiY29kZSI6ImFkbWluIiwicm9sZXMiOlsiU3VwZXJBZG1pbiIsIkNBTkdLVUdVQU5MSVlVQU4iXSwidHlwZSI6MX0.b_vTCbb7JpmZx0DT6XM-hTgVC7RlLmr1Vwi7-A26ThQ";
|
||||||
// ===================== 配置区结束 =====================
|
// ===================== 配置区结束 =====================
|
||||||
|
|
||||||
/** 测试过程中创建的抽样方案编号(用于验证) */
|
/**
|
||||||
|
* 测试过程中创建的抽样方案编号(用于验证)
|
||||||
|
*/
|
||||||
private static String createdPlanCode;
|
private static String createdPlanCode;
|
||||||
|
|
||||||
// ==================== HTTP 工具方法 ====================
|
// ==================== HTTP 工具方法 ====================
|
||||||
|
|
@ -78,7 +87,8 @@ public class QmsSamplingPlanApiTest {
|
||||||
public void test01_addSamplingPlan_Success() {
|
public void test01_addSamplingPlan_Success() {
|
||||||
QmsSamplingPlanAddQO request = buildValidRequest();
|
QmsSamplingPlanAddQO request = buildValidRequest();
|
||||||
|
|
||||||
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {});
|
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {
|
||||||
|
});
|
||||||
assertSuccess(result, "新增抽样方案失败");
|
assertSuccess(result, "新增抽样方案失败");
|
||||||
System.out.println(" ✅ 新增抽样方案成功");
|
System.out.println(" ✅ 新增抽样方案成功");
|
||||||
}
|
}
|
||||||
|
|
@ -93,7 +103,8 @@ public class QmsSamplingPlanApiTest {
|
||||||
QmsSamplingPlanAddQO request = buildValidRequest();
|
QmsSamplingPlanAddQO request = buildValidRequest();
|
||||||
request.setPlanName(null);
|
request.setPlanName(null);
|
||||||
|
|
||||||
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {});
|
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {
|
||||||
|
});
|
||||||
assertFailed(result, "方案名称为空应返回失败");
|
assertFailed(result, "方案名称为空应返回失败");
|
||||||
System.out.println(" ✅ 方案名称为空校验通过");
|
System.out.println(" ✅ 方案名称为空校验通过");
|
||||||
}
|
}
|
||||||
|
|
@ -108,7 +119,8 @@ public class QmsSamplingPlanApiTest {
|
||||||
QmsSamplingPlanAddQO request = buildValidRequest();
|
QmsSamplingPlanAddQO request = buildValidRequest();
|
||||||
request.setAqlPriorityValues(null);
|
request.setAqlPriorityValues(null);
|
||||||
|
|
||||||
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {});
|
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {
|
||||||
|
});
|
||||||
assertFailed(result, "AQL优先值列表为空应返回失败");
|
assertFailed(result, "AQL优先值列表为空应返回失败");
|
||||||
System.out.println(" ✅ AQL优先值列表为空校验通过");
|
System.out.println(" ✅ AQL优先值列表为空校验通过");
|
||||||
}
|
}
|
||||||
|
|
@ -123,7 +135,8 @@ public class QmsSamplingPlanApiTest {
|
||||||
QmsSamplingPlanAddQO request = buildValidRequest();
|
QmsSamplingPlanAddQO request = buildValidRequest();
|
||||||
request.setStrictnessTransferRules(null);
|
request.setStrictnessTransferRules(null);
|
||||||
|
|
||||||
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {});
|
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {
|
||||||
|
});
|
||||||
assertFailed(result, "严格性转移规则列表为空应返回失败");
|
assertFailed(result, "严格性转移规则列表为空应返回失败");
|
||||||
System.out.println(" ✅ 严格性转移规则列表为空校验通过");
|
System.out.println(" ✅ 严格性转移规则列表为空校验通过");
|
||||||
}
|
}
|
||||||
|
|
@ -138,7 +151,8 @@ public class QmsSamplingPlanApiTest {
|
||||||
QmsSamplingPlanAddQO request = buildValidRequest();
|
QmsSamplingPlanAddQO request = buildValidRequest();
|
||||||
request.setCodeLetters(null);
|
request.setCodeLetters(null);
|
||||||
|
|
||||||
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {});
|
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {
|
||||||
|
});
|
||||||
assertFailed(result, "字码列表为空应返回失败");
|
assertFailed(result, "字码列表为空应返回失败");
|
||||||
System.out.println(" ✅ 字码列表为空校验通过");
|
System.out.println(" ✅ 字码列表为空校验通过");
|
||||||
}
|
}
|
||||||
|
|
@ -153,7 +167,8 @@ public class QmsSamplingPlanApiTest {
|
||||||
QmsSamplingPlanAddQO request = buildValidRequest();
|
QmsSamplingPlanAddQO request = buildValidRequest();
|
||||||
request.setCodeLetterMatrices(null);
|
request.setCodeLetterMatrices(null);
|
||||||
|
|
||||||
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {});
|
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {
|
||||||
|
});
|
||||||
assertFailed(result, "字码矩阵维护列表为空应返回失败");
|
assertFailed(result, "字码矩阵维护列表为空应返回失败");
|
||||||
System.out.println(" ✅ 字码矩阵维护列表为空校验通过");
|
System.out.println(" ✅ 字码矩阵维护列表为空校验通过");
|
||||||
}
|
}
|
||||||
|
|
@ -168,7 +183,8 @@ public class QmsSamplingPlanApiTest {
|
||||||
QmsSamplingPlanAddQO request = buildValidRequest();
|
QmsSamplingPlanAddQO request = buildValidRequest();
|
||||||
request.setSamplingPlanInspections(null);
|
request.setSamplingPlanInspections(null);
|
||||||
|
|
||||||
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {});
|
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {
|
||||||
|
});
|
||||||
assertFailed(result, "抽样方案检验列表为空应返回失败");
|
assertFailed(result, "抽样方案检验列表为空应返回失败");
|
||||||
System.out.println(" ✅ 抽样方案检验列表为空校验通过");
|
System.out.println(" ✅ 抽样方案检验列表为空校验通过");
|
||||||
}
|
}
|
||||||
|
|
@ -184,7 +200,8 @@ public class QmsSamplingPlanApiTest {
|
||||||
request.setPlanName("完整参数抽样方案_" + System.currentTimeMillis());
|
request.setPlanName("完整参数抽样方案_" + System.currentTimeMillis());
|
||||||
request.setRemark("这是接口测试创建的抽样方案");
|
request.setRemark("这是接口测试创建的抽样方案");
|
||||||
|
|
||||||
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {});
|
ApiResult<Void> result = post("/sampling-plan/add", request, new TypeReference<>() {
|
||||||
|
});
|
||||||
assertSuccess(result, "带备注的新增抽样方案失败");
|
assertSuccess(result, "带备注的新增抽样方案失败");
|
||||||
System.out.println(" ✅ 带备注的新增抽样方案成功");
|
System.out.println(" ✅ 带备注的新增抽样方案成功");
|
||||||
}
|
}
|
||||||
|
|
@ -196,7 +213,7 @@ public class QmsSamplingPlanApiTest {
|
||||||
*/
|
*/
|
||||||
private QmsSamplingPlanAddQO buildValidRequest() {
|
private QmsSamplingPlanAddQO buildValidRequest() {
|
||||||
QmsSamplingPlanAddQO request = new QmsSamplingPlanAddQO();
|
QmsSamplingPlanAddQO request = new QmsSamplingPlanAddQO();
|
||||||
request.setPlanName("测试抽样方案_" + System.currentTimeMillis());
|
request.setPlanName("抽样方案_" + DateTimeUtil.format(LocalDate.now()) + "_" + RandomUtil.randomNumbers(4));
|
||||||
request.setRemark("接口测试备注");
|
request.setRemark("接口测试备注");
|
||||||
|
|
||||||
// 构建AQL优先值列表
|
// 构建AQL优先值列表
|
||||||
|
|
@ -204,9 +221,6 @@ public class QmsSamplingPlanApiTest {
|
||||||
QmsSamplingPlanAddQO.AqlPriorityValueQO aql1 = new QmsSamplingPlanAddQO.AqlPriorityValueQO();
|
QmsSamplingPlanAddQO.AqlPriorityValueQO aql1 = new QmsSamplingPlanAddQO.AqlPriorityValueQO();
|
||||||
aql1.setPriorityValue(new BigDecimal("0.010"));
|
aql1.setPriorityValue(new BigDecimal("0.010"));
|
||||||
aqlPriorityValues.add(aql1);
|
aqlPriorityValues.add(aql1);
|
||||||
QmsSamplingPlanAddQO.AqlPriorityValueQO aql2 = new QmsSamplingPlanAddQO.AqlPriorityValueQO();
|
|
||||||
aql2.setPriorityValue(new BigDecimal("0.065"));
|
|
||||||
aqlPriorityValues.add(aql2);
|
|
||||||
request.setAqlPriorityValues(aqlPriorityValues);
|
request.setAqlPriorityValues(aqlPriorityValues);
|
||||||
|
|
||||||
// 构建严格性转移规则列表
|
// 构建严格性转移规则列表
|
||||||
|
|
@ -227,7 +241,7 @@ public class QmsSamplingPlanApiTest {
|
||||||
|
|
||||||
// 构建字码列表
|
// 构建字码列表
|
||||||
List<QmsSamplingPlanAddQO.CodeLetterQO> codeLetters = new ArrayList<>();
|
List<QmsSamplingPlanAddQO.CodeLetterQO> codeLetters = new ArrayList<>();
|
||||||
String[] letters = {"A", "B", "C", "D", "E", "F", "G", "H", "J"};
|
String[] letters = {"A"};
|
||||||
for (String letter : letters) {
|
for (String letter : letters) {
|
||||||
QmsSamplingPlanAddQO.CodeLetterQO codeLetter = new QmsSamplingPlanAddQO.CodeLetterQO();
|
QmsSamplingPlanAddQO.CodeLetterQO codeLetter = new QmsSamplingPlanAddQO.CodeLetterQO();
|
||||||
codeLetter.setCodeLetter(letter);
|
codeLetter.setCodeLetter(letter);
|
||||||
|
|
@ -239,24 +253,76 @@ public class QmsSamplingPlanApiTest {
|
||||||
// 使用字码内容和AQL优先值来关联,而不是ID
|
// 使用字码内容和AQL优先值来关联,而不是ID
|
||||||
// 字码内容需要在codeLetters列表中存在,AQL优先值需要在aqlPriorityValues列表中存在
|
// 字码内容需要在codeLetters列表中存在,AQL优先值需要在aqlPriorityValues列表中存在
|
||||||
List<QmsSamplingPlanAddQO.CodeLetterMatrixQO> matrices = new ArrayList<>();
|
List<QmsSamplingPlanAddQO.CodeLetterMatrixQO> matrices = new ArrayList<>();
|
||||||
QmsSamplingPlanAddQO.CodeLetterMatrixQO matrix = new QmsSamplingPlanAddQO.CodeLetterMatrixQO();
|
QmsSamplingPlanAddQO.CodeLetterMatrixQO matrix1 = new QmsSamplingPlanAddQO.CodeLetterMatrixQO();
|
||||||
matrix.setInspectionType((short) 0); // 正常检查
|
matrix1.setInspectionType((short) 0); // 正常检查
|
||||||
matrix.setCodeLetter("A"); // 关联字码列表中的"A"
|
matrix1.setCodeLetter("A"); // 关联字码列表中的"A"
|
||||||
matrix.setAqlPriorityValue(new BigDecimal("0.010")); // 关联AQL优先值列表中的0.010
|
matrix1.setAqlPriorityValue(new BigDecimal("0.010")); // 关联AQL优先值列表中的0.010
|
||||||
matrix.setSampleSize(125);
|
matrix1.setSampleSize(125);
|
||||||
matrix.setReValue(3);
|
matrix1.setReValue(3);
|
||||||
matrix.setAcValue(3);
|
matrix1.setAcValue(3);
|
||||||
matrices.add(matrix);
|
matrices.add(matrix1);
|
||||||
|
QmsSamplingPlanAddQO.CodeLetterMatrixQO matrix2 = new QmsSamplingPlanAddQO.CodeLetterMatrixQO();
|
||||||
|
matrix2.setInspectionType((short) 1); // 正常检查
|
||||||
|
matrix2.setCodeLetter("A"); // 关联字码列表中的"A"
|
||||||
|
matrix2.setAqlPriorityValue(new BigDecimal("0.010")); // 关联AQL优先值列表中的0.010
|
||||||
|
matrix2.setSampleSize(125);
|
||||||
|
matrix2.setReValue(3);
|
||||||
|
matrix2.setAcValue(3);
|
||||||
|
matrices.add(matrix2);
|
||||||
|
QmsSamplingPlanAddQO.CodeLetterMatrixQO matrix3 = new QmsSamplingPlanAddQO.CodeLetterMatrixQO();
|
||||||
|
matrix3.setInspectionType((short) 2); // 正常检查
|
||||||
|
matrix3.setCodeLetter("A"); // 关联字码列表中的"A"
|
||||||
|
matrix3.setAqlPriorityValue(new BigDecimal("0.010")); // 关联AQL优先值列表中的0.010
|
||||||
|
matrix3.setSampleSize(125);
|
||||||
|
matrix3.setReValue(3);
|
||||||
|
matrix3.setAcValue(3);
|
||||||
|
matrices.add(matrix3);
|
||||||
request.setCodeLetterMatrices(matrices);
|
request.setCodeLetterMatrices(matrices);
|
||||||
|
|
||||||
// 构建抽样方案检验列表
|
// 构建抽样方案检验列表
|
||||||
List<QmsSamplingPlanAddQO.SamplingPlanInspectionQO> inspections = new ArrayList<>();
|
List<QmsSamplingPlanAddQO.SamplingPlanInspectionQO> inspections = new ArrayList<>();
|
||||||
QmsSamplingPlanAddQO.SamplingPlanInspectionQO inspection = new QmsSamplingPlanAddQO.SamplingPlanInspectionQO();
|
inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO()
|
||||||
inspection.setRangeStart(1201);
|
.setRangeStart(1)
|
||||||
inspection.setRangeEnd(3200);
|
.setRangeEnd(10000)
|
||||||
inspection.setInspectionDictionaryItemId(1L);
|
.setInspectionDictionaryItemId(2043862841552723969L)
|
||||||
inspection.setCodeLetter("A"); // 关联字码列表中的"A"
|
.setCodeLetter("A")
|
||||||
inspections.add(inspection);
|
);
|
||||||
|
inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO()
|
||||||
|
.setRangeStart(1)
|
||||||
|
.setRangeEnd(10000)
|
||||||
|
.setInspectionDictionaryItemId(2043862877426606081L)
|
||||||
|
.setCodeLetter("A")
|
||||||
|
);
|
||||||
|
inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO()
|
||||||
|
.setRangeStart(1)
|
||||||
|
.setRangeEnd(10000)
|
||||||
|
.setInspectionDictionaryItemId(2043862910502887425L)
|
||||||
|
.setCodeLetter("A")
|
||||||
|
);
|
||||||
|
inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO()
|
||||||
|
.setRangeStart(1)
|
||||||
|
.setRangeEnd(10000)
|
||||||
|
.setInspectionDictionaryItemId(2043862949837070338L)
|
||||||
|
.setCodeLetter("A")
|
||||||
|
);
|
||||||
|
inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO()
|
||||||
|
.setRangeStart(1)
|
||||||
|
.setRangeEnd(10000)
|
||||||
|
.setInspectionDictionaryItemId(2043863106863423489L)
|
||||||
|
.setCodeLetter("A")
|
||||||
|
);
|
||||||
|
inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO()
|
||||||
|
.setRangeStart(1)
|
||||||
|
.setRangeEnd(10000)
|
||||||
|
.setInspectionDictionaryItemId(2043863143576166401L)
|
||||||
|
.setCodeLetter("A")
|
||||||
|
);
|
||||||
|
inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO()
|
||||||
|
.setRangeStart(1)
|
||||||
|
.setRangeEnd(10000)
|
||||||
|
.setInspectionDictionaryItemId(2043863182146985986L)
|
||||||
|
.setCodeLetter("A")
|
||||||
|
);
|
||||||
request.setSamplingPlanInspections(inspections);
|
request.setSamplingPlanInspections(inspections);
|
||||||
|
|
||||||
return request;
|
return request;
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -159,6 +160,7 @@ public class QmsSamplingPlanAddQO {
|
||||||
* 抽样方案检验
|
* 抽样方案检验
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
public static class SamplingPlanInspectionQO {
|
public static class SamplingPlanInspectionQO {
|
||||||
/**
|
/**
|
||||||
* 范围起始值(批量下限)
|
* 范围起始值(批量下限)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue