From cd8c3be96eda54abdadfd524385e02649340559d Mon Sep 17 00:00:00 2001 From: "nathan.liu" Date: Tue, 23 Aug 2022 17:13:46 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=B7=9F=E8=B8=AA):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=A7=E8=A1=8C=E6=B5=8B=E8=AF=95=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E5=90=8E=E7=8A=B6=E6=80=81=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1015942 --user=刘瑶 【测试跟踪】github#16977,在测试计划列表列表中点击【执行】,完成执行后。该计划当前状态不对:测试进度非100%,但是当前状态为“完成”。 https://www.tapd.cn/55049933/s/1231292 Closes#16977 --- .../track/service/TestPlanMessageService.java | 28 +++++++++++++++++-- backend/src/main/java/io/metersphere/xpack | 2 +- frontend/src/business/components/xpack | 2 +- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanMessageService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanMessageService.java index 65b030a817..4274ead6fa 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestPlanMessageService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestPlanMessageService.java @@ -30,6 +30,7 @@ import javax.annotation.Resource; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Optional; @Service @Transactional @@ -61,8 +62,10 @@ public class TestPlanMessageService { if (!report.getIsApiCaseExecuting() && !report.getIsPerformanceExecuting() && !report.getIsScenarioExecuting()) { //更新TestPlan状态为完成 TestPlanWithBLOBs testPlan = testPlanMapper.selectByPrimaryKey(report.getTestPlanId()); - if (testPlan != null && !StringUtils.equals(testPlan.getStatus(), TestPlanStatus.Completed.name())) { - testPlan.setStatus(TestPlanStatus.Completed.name()); + if (testPlan != null + && !StringUtils.equalsAny(testPlan.getStatus(), TestPlanStatus.Completed.name(), TestPlanStatus.Finished.name())) { + + testPlan.setStatus(calcTestPlanStatusWithPassRate(testPlan)); testPlanService.editTestPlan(testPlan); } try { @@ -80,6 +83,27 @@ public class TestPlanMessageService { } } + public String calcTestPlanStatusWithPassRate(TestPlanWithBLOBs testPlan) { + try { + // 计算通过率 + TestPlanDTOWithMetric testPlanDTOWithMetric = BeanUtils.copyBean(new TestPlanDTOWithMetric(), testPlan); + testPlanService.calcTestPlanRate(Collections.singletonList(testPlanDTOWithMetric)); + //测试进度 + Double testRate = Optional.ofNullable(testPlanDTOWithMetric.getTestRate()).orElse(0.0); + //通过率 + Double passRate = Optional.ofNullable(testPlanDTOWithMetric.getPassRate()).orElse(0.0); + + //只有通过率 与 测试进度 都为100% 才为已完成状态 + if (testRate >= 100 && passRate >= 100) { + return TestPlanStatus.Completed.name(); + } + } catch (Exception e) { + LogUtil.error("计算通过率失败!", e); + } + + return TestPlanStatus.Finished.name(); + } + @Async public void sendMessage(TestPlan testPlan, TestPlanReport testPlanReport, String projectId) { assert testPlan != null; diff --git a/backend/src/main/java/io/metersphere/xpack b/backend/src/main/java/io/metersphere/xpack index 830bad0961..2ca4ff0b6d 160000 --- a/backend/src/main/java/io/metersphere/xpack +++ b/backend/src/main/java/io/metersphere/xpack @@ -1 +1 @@ -Subproject commit 830bad0961b3ec2eaff21e9eac382d16f0521639 +Subproject commit 2ca4ff0b6d771d280eba6958345426e56d1d15a4 diff --git a/frontend/src/business/components/xpack b/frontend/src/business/components/xpack index 12370ba86a..be7591f7f5 160000 --- a/frontend/src/business/components/xpack +++ b/frontend/src/business/components/xpack @@ -1 +1 @@ -Subproject commit 12370ba86adfdf31b11a30d48a59c3715490b351 +Subproject commit be7591f7f5077a77ee5abce16461af30f3ac8666