Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MeterSphere
metersphere
提交
ff9965b2
M
metersphere
项目概览
MeterSphere
/
metersphere
上一次同步 大约 3 年
通知
25
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
metersphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ff9965b2
编写于
7月 27, 2020
作者:
S
shiziyuan9527
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 导入用例时,用例所有字段值都相同才判断用例重复
上级
d7df95c7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
63 addition
and
13 deletion
+63
-13
backend/src/main/java/io/metersphere/excel/listener/EasyExcelListener.java
...java/io/metersphere/excel/listener/EasyExcelListener.java
+3
-0
backend/src/main/java/io/metersphere/excel/listener/TestCaseDataListener.java
...a/io/metersphere/excel/listener/TestCaseDataListener.java
+37
-10
backend/src/main/java/io/metersphere/track/service/TestCaseService.java
...in/java/io/metersphere/track/service/TestCaseService.java
+23
-3
未找到文件。
backend/src/main/java/io/metersphere/excel/listener/EasyExcelListener.java
浏览文件 @
ff9965b2
...
...
@@ -7,6 +7,7 @@ import com.alibaba.excel.exception.ExcelAnalysisException;
import
com.alibaba.excel.util.StringUtils
;
import
io.metersphere.commons.utils.LogUtil
;
import
io.metersphere.excel.domain.ExcelErrData
;
import
io.metersphere.excel.domain.TestCaseExcelData
;
import
io.metersphere.excel.utils.EasyExcelI18nTranslator
;
import
io.metersphere.excel.utils.ExcelValidateHelper
;
import
io.metersphere.i18n.Translator
;
...
...
@@ -24,6 +25,8 @@ public abstract class EasyExcelListener<T> extends AnalysisEventListener<T> {
protected
EasyExcelI18nTranslator
easyExcelI18nTranslator
;
protected
List
<
TestCaseExcelData
>
excelDataList
=
new
ArrayList
<>();
/**
* 每隔2000条存储数据库,然后清理list ,方便内存回收
*/
...
...
backend/src/main/java/io/metersphere/excel/listener/TestCaseDataListener.java
浏览文件 @
ff9965b2
...
...
@@ -10,10 +10,7 @@ import io.metersphere.i18n.Translator;
import
io.metersphere.track.service.TestCaseService
;
import
org.apache.commons.lang3.StringUtils
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.UUID
;
import
java.util.*
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
...
...
@@ -57,10 +54,35 @@ public class TestCaseDataListener extends EasyExcelListener<TestCaseExcelData> {
if
(!
userIds
.
contains
(
data
.
getMaintainer
()))
{
stringBuilder
.
append
(
Translator
.
get
(
"user_not_exists"
)
+
":"
+
data
.
getMaintainer
()
+
"; "
);
}
if
(
testCaseNames
.
contains
(
data
.
getName
()))
{
stringBuilder
.
append
(
Translator
.
get
(
"test_case_already_exists_excel"
)
+
":"
+
data
.
getName
()
+
"; "
);
TestCaseWithBLOBs
testCase
=
new
TestCaseWithBLOBs
();
BeanUtils
.
copyBean
(
testCase
,
data
);
testCase
.
setProjectId
(
projectId
);
String
steps
=
getSteps
(
data
);
testCase
.
setSteps
(
steps
);
boolean
dbExist
=
testCaseService
.
exist
(
testCase
);
boolean
excelExist
=
false
;
if
(
dbExist
)
{
// db exist
stringBuilder
.
append
(
Translator
.
get
(
"test_case_already_exists_excel"
)
+
":"
+
data
.
getName
()
+
"; "
);
}
else
{
// @Data 重写了 equals 和 hashCode 方法
excelExist
=
excelDataList
.
contains
(
data
);
}
if
(
excelExist
)
{
// excel exist
stringBuilder
.
append
(
Translator
.
get
(
"test_case_already_exists_excel"
)
+
":"
+
data
.
getName
()
+
"; "
);
}
else
{
excelDataList
.
add
(
data
);
}
}
else
{
testCaseNames
.
add
(
data
.
getName
());
excelDataList
.
add
(
data
);
}
return
stringBuilder
.
toString
();
}
...
...
@@ -103,6 +125,13 @@ public class TestCaseDataListener extends EasyExcelListener<TestCaseExcelData> {
testCase
.
setNodePath
(
nodePath
);
String
steps
=
getSteps
(
data
);
testCase
.
setSteps
(
steps
);
return
testCase
;
}
public
String
getSteps
(
TestCaseExcelData
data
)
{
JSONArray
jsonArray
=
new
JSONArray
();
String
[]
stepDesc
=
new
String
[
1
];
...
...
@@ -124,7 +153,8 @@ public class TestCaseDataListener extends EasyExcelListener<TestCaseExcelData> {
for
(
int
i
=
0
;
i
<
index
;
i
++)
{
JSONObject
step
=
new
JSONObject
();
// 保持插入顺序,判断用例是否有相同的steps
JSONObject
step
=
new
JSONObject
(
true
);
step
.
put
(
"num"
,
i
+
1
);
Pattern
descPattern
=
Pattern
.
compile
(
pattern
);
...
...
@@ -150,10 +180,7 @@ public class TestCaseDataListener extends EasyExcelListener<TestCaseExcelData> {
jsonArray
.
add
(
step
);
}
testCase
.
setSteps
(
jsonArray
.
toJSONString
());
return
testCase
;
return
jsonArray
.
toJSONString
();
}
}
backend/src/main/java/io/metersphere/track/service/TestCaseService.java
浏览文件 @
ff9965b2
...
...
@@ -106,13 +106,16 @@ public class TestCaseService {
TestCaseExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andNameEqualTo
(
testCase
.
getName
())
.
andProjectIdEqualTo
(
testCase
.
getProjectId
())
.
andNodeIdEqualTo
(
testCase
.
getNodeId
())
.
andNodePathEqualTo
(
testCase
.
getNodePath
())
.
andTypeEqualTo
(
testCase
.
getType
())
.
andMaintainerEqualTo
(
testCase
.
getMaintainer
())
.
andPriorityEqualTo
(
testCase
.
getPriority
())
.
andMethodEqualTo
(
testCase
.
getMethod
());
// if (StringUtils.isNotBlank(testCase.getNodeId())) {
// criteria.andNodeIdEqualTo(testCase.getTestId());
// }
if
(
StringUtils
.
isNotBlank
(
testCase
.
getTestId
()))
{
criteria
.
andTestIdEqualTo
(
testCase
.
getTestId
());
}
...
...
@@ -371,8 +374,8 @@ public class TestCaseService {
JSONArray
jsonArray
=
JSON
.
parseArray
(
steps
);
for
(
int
j
=
0
;
j
<
jsonArray
.
size
();
j
++)
{
int
num
=
j
+
1
;
step
.
append
(
num
+
"
:
"
+
jsonArray
.
getJSONObject
(
j
).
getString
(
"desc"
)
+
"\n"
);
result
.
append
(
num
+
"
:
"
+
jsonArray
.
getJSONObject
(
j
).
getString
(
"result"
)
+
"\n"
);
step
.
append
(
num
+
"
.
"
+
jsonArray
.
getJSONObject
(
j
).
getString
(
"desc"
)
+
"\n"
);
result
.
append
(
num
+
"
.
"
+
jsonArray
.
getJSONObject
(
j
).
getString
(
"result"
)
+
"\n"
);
}
data
.
setStepDesc
(
step
.
toString
());
...
...
@@ -471,4 +474,21 @@ public class TestCaseService {
return
Optional
.
ofNullable
(
testCase
.
getNum
()
+
1
).
orElse
(
100001
);
}
}
/**
* 导入用例前,检查数据库是否存在此用例
* @param testCaseWithBLOBs
* @return
*/
public
boolean
exist
(
TestCaseWithBLOBs
testCaseWithBLOBs
)
{
try
{
checkTestCaseExist
(
testCaseWithBLOBs
);
}
catch
(
MSException
e
)
{
return
true
;
}
return
false
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录