Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
kt-keystone
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
kt-keystone
Commits
463e0ba2
提交
463e0ba2
authored
3月 16, 2022
作者:
mry
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(base): 新增了测试报告接口
上级
e18356b6
全部展开
显示空白字符变更
内嵌
并排
正在显示
24 个修改的文件
包含
426 行增加
和
62 行删除
+426
-62
pom.xml
kt-base/pom.xml
+0
-14
TestNg.java
kt-base/src/main/java/org/matrix/testNg/web/TestNg.java
+10
-0
DataBean.java
.../src/main/java/org/matrix/testNg/web/entity/DataBean.java
+57
-0
DataBeans.java
...src/main/java/org/matrix/testNg/web/entity/DataBeans.java
+54
-0
DataBeansJobVo.java
...ain/java/org/matrix/testNg/web/entity/DataBeansJobVo.java
+18
-0
DataBeansVo.java
...c/main/java/org/matrix/testNg/web/entity/DataBeansVo.java
+28
-0
ReportMessage.java
...main/java/org/matrix/testNg/web/entity/ReportMessage.java
+19
-0
GenerateReporter.java
...n/java/org/matrix/testNg/web/report/GenerateReporter.java
+72
-0
ReporterData.java
.../main/java/org/matrix/testNg/web/report/ReporterData.java
+56
-0
ReporterDataJob.java
...in/java/org/matrix/testNg/web/report/ReporterDataJob.java
+8
-0
TestNgImpl.java
...rc/main/java/org/matrix/testNg/web/report/TestNgImpl.java
+27
-0
DataBean.java
...c/main/java/org/matrix/testNg/xml/reportXml/DataBean.java
+1
-1
GenerateReporter.java
...ava/org/matrix/testNg/xml/reportXml/GenerateReporter.java
+6
-5
ReportUnits.java
...ain/java/org/matrix/testNg/xml/reportXml/ReportUnits.java
+1
-1
ReporterData.java
...in/java/org/matrix/testNg/xml/reportXml/ReporterData.java
+4
-4
DataProviderForDb.java
...java/org/matrix/testNg/xml/testXml/DataProviderForDb.java
+4
-3
TestXml.java
.../src/main/java/org/matrix/testNg/xml/testXml/TestXml.java
+29
-28
ReporterUtils.java
kt-base/src/main/java/org/matrix/util/ReporterUtils.java
+22
-0
application.yml
kt-base/src/main/resources/application.yml
+5
-5
index.html
kt-base/src/main/resources/templates/index.html
+0
-0
overview.ftl
kt-base/src/main/resources/templates/overview.ftl
+5
-1
overviewBeautiful.ftl
kt-base/src/main/resources/templates/overviewBeautiful.ftl
+0
-0
testng.xml
kt-script/src/main/java/org/matrix/testng.xml
+0
-0
pom.xml
pom.xml
+0
-0
没有找到文件。
kt-base/pom.xml
浏览文件 @
463e0ba2
...
@@ -150,20 +150,6 @@
...
@@ -150,20 +150,6 @@
<artifactId>
spring-boot-starter-websocket
</artifactId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>
org.testng
</groupId>
<artifactId>
testng
</artifactId>
<version>
7.5
</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.quhaodian/freemaker -->
<dependency>
<groupId>
com.quhaodian
</groupId>
<artifactId>
freemaker
</artifactId>
<version>
1.8.1
</version>
</dependency>
</dependencies>
</dependencies>
...
...
kt-base/src/main/java/org/matrix/testNg/web/TestNg.java
0 → 100644
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
web
;
/**
* 执行testNg测试接口
*
* @author MRY
*/
public
interface
TestNg
{
}
kt-base/src/main/java/org/matrix/testNg/web/entity/DataBean.java
0 → 100644
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
web
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* 模板中的公共部分
*
* @author MRY
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
DataBean
{
/**
* 用例总数
*/
private
Integer
total
;
/**
* 通过用例数
*/
private
Integer
passNum
;
/**
* 失败用例数
*/
private
Integer
failNum
;
/**
* 执行总时间
*/
private
Long
allTime
;
/**
* 用例通过率
*/
private
Integer
probability
;
/**
* 前置行动ID组,例如:1,2,3
*/
private
String
moveBefore
;
/**
* 后置行动ID组,例如:1,2,3
*/
private
String
moveAfterCase
;
/**
* 测试执行后行动ID组,例如:1,2,3
*/
private
String
moveAfterTest
;
}
kt-base/src/main/java/org/matrix/testNg/web/entity/DataBeans.java
0 → 100644
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
web
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.matrix.actuators.checkpoint.CheckPointResult
;
/**
* 模板中的非公共部分
*
* @author MRY
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
DataBeans
{
/**
* 用例名称
*/
private
String
testCaseName
;
/**
* 用例类型
*/
private
String
type
;
/**
* 详情参数
*/
private
String
detail
;
/**
* 测试描述
*/
private
String
description
;
/**
* 执行结果
*/
private
Boolean
result
;
/**
* 单个测试时间
*/
private
String
duration
;
/**
* 结果信息
*/
private
CheckPointResult
resultMessage
;
}
kt-base/src/main/java/org/matrix/testNg/web/entity/DataBeansJobVo.java
0 → 100644
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
web
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* @author MRY
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
DataBeansJobVo
{
private
List
<
DataBeansVo
>
dataBeansVoList
;
}
kt-base/src/main/java/org/matrix/testNg/web/entity/DataBeansVo.java
0 → 100644
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
web
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
/**
* 整个模板需要的信息
*
* @author MRY
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
DataBeansVo
{
/**
* 报告公共部分
*/
private
DataBean
dataBean
;
/**
* 细节部分
*/
private
List
<
DataBeans
>
dataBeanLists
;
}
kt-base/src/main/java/org/matrix/testNg/web/entity/ReportMessage.java
0 → 100644
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
web
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author MRY
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
ReportMessage
{
/**
* 报告生成的地址
*/
private
String
url
;
}
kt-base/src/main/java/org/matrix/testNg/web/report/GenerateReporter.java
0 → 100644
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
web
.
report
;
import
freemarker.template.Configuration
;
import
freemarker.template.Template
;
import
freemarker.template.TemplateExceptionHandler
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.testNg.web.entity.DataBean
;
import
org.matrix.testNg.web.entity.DataBeans
;
import
org.matrix.testNg.web.entity.ReportMessage
;
import
org.matrix.util.ReporterUtils
;
import
java.io.*
;
import
java.nio.charset.StandardCharsets
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author mruny
*/
public
class
GenerateReporter
{
private
static
final
LocalDateTime
TIME
=
LocalDateTime
.
now
();
private
static
final
DateTimeFormatter
DATE_TIME_FORMATTER
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd-HH-mm-ss"
);
private
static
final
String
STRING
=
DATE_TIME_FORMATTER
.
format
(
TIME
);
private
static
final
String
OUTPUT_FOLDER
=
System
.
getProperty
(
"user.dir"
)
+
"/"
;
private
static
final
String
FILE_NAME
=
STRING
+
"-testNg.html"
;
public
ReportMessage
generateReport
()
{
try
{
Configuration
cfg
=
new
Configuration
(
Configuration
.
VERSION_2_3_28
);
cfg
.
setClassForTemplateLoading
(
this
.
getClass
(),
"/templates"
);
cfg
.
setDefaultEncoding
(
"UTF-8"
);
cfg
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
Template
temp
=
cfg
.
getTemplate
(
"overviewBeautiful.ftl"
);
Map
context
=
new
HashMap
();
ReporterData
reporterData
=
new
ReporterData
();
DataBean
dataBean
=
reporterData
.
testDataBean
();
List
<
DataBeans
>
dataBeansList
=
reporterData
.
testDataBeans
();
// 这里是公共的信息.
for
(
DataBeans
bean
:
dataBeansList
)
{
context
.
put
(
"overView"
,
dataBean
);
if
(
bean
.
getResult
())
{
context
.
put
(
"pass"
,
bean
);
}
else
{
context
.
put
(
"fail"
,
bean
);
}
}
//文件夹不存在的话进行创建
File
reportDir
=
new
File
(
OUTPUT_FOLDER
);
if
(!
reportDir
.
exists
()
&&
!
reportDir
.
isDirectory
())
{
reportDir
.
mkdir
();
}
// 输出流
FileOutputStream
out
=
new
FileOutputStream
(
OUTPUT_FOLDER
+
"/"
+
FILE_NAME
);
Writer
writer
=
new
BufferedWriter
(
new
OutputStreamWriter
(
out
,
StandardCharsets
.
UTF_8
));
// 转换输出
temp
.
process
(
context
,
writer
);
writer
.
flush
();
ReportMessage
reportMessage
=
new
ReportMessage
();
reportMessage
.
setUrl
(
OUTPUT_FOLDER
+
"/"
+
FILE_NAME
);
return
reportMessage
;
}
catch
(
Exception
e
)
{
throw
new
GlobalException
(
e
.
getMessage
());
}
finally
{
ReporterUtils
.
map
=
new
HashMap
<>();
}
}
}
\ No newline at end of file
kt-base/src/main/java/org/matrix/testNg/web/report/ReporterData.java
0 → 100644
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
web
.
report
;
import
org.matrix.testNg.web.entity.DataBean
;
import
org.matrix.testNg.web.entity.DataBeans
;
import
org.matrix.testNg.web.entity.DataBeansVo
;
import
org.matrix.util.ReporterUtils
;
import
java.util.List
;
/**
* @author mruny
*/
public
class
ReporterData
{
/**
* 模板公共部分
*
* @return 补全了的所有报告信息
*/
public
DataBean
testDataBean
()
{
DataBeansVo
dataBeansVo
=
ReporterUtils
.
map
.
get
(
"dataBeansVo"
);
int
passNum
=
0
;
int
failNum
=
0
;
// 测试结果汇总数据
DataBean
dataBean
=
dataBeansVo
.
getDataBean
();
List
<
DataBeans
>
dataBeanLists
=
dataBeansVo
.
getDataBeanLists
();
for
(
DataBeans
dataBeanList
:
dataBeanLists
)
{
if
(
dataBeanList
.
getResult
())
{
passNum
+=
1
;
}
else
{
failNum
+=
1
;
}
}
//成功
dataBean
.
setPassNum
(
passNum
);
//失败
dataBean
.
setFailNum
(
failNum
);
//总数
dataBean
.
setTotal
(
passNum
+
failNum
);
//通过率
dataBean
.
setProbability
(
passNum
/
(
passNum
+
failNum
));
// TODO 时间需要处理
return
dataBean
;
}
/**
* 模板的细节部分
*
* @return 报告中细节部分的信息
*/
public
List
<
DataBeans
>
testDataBeans
()
{
return
ReporterUtils
.
map
.
get
(
"dataBeansVo"
).
getDataBeanLists
();
}
}
\ No newline at end of file
kt-base/src/main/java/org/matrix/testNg/web/report/ReporterDataJob.java
0 → 100644
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
web
.
report
;
/**
* @author MRY
*/
public
class
ReporterDataJob
{
}
kt-base/src/main/java/org/matrix/testNg/web/report/TestNgImpl.java
0 → 100644
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
web
.
report
;
import
org.matrix.testNg.web.TestNg
;
import
org.matrix.testNg.web.entity.DataBeansVo
;
import
org.matrix.testNg.web.entity.ReportMessage
;
import
org.matrix.util.ReporterUtils
;
import
org.springframework.stereotype.Component
;
/**
* @author MRY
*/
@Component
public
class
TestNgImpl
implements
TestNg
{
/**
* 报告生成的位置
*
* @param dataBeansVo 报告中需要的信息
* @return 报告位置信息
*/
public
ReportMessage
getReportUrl
(
DataBeansVo
dataBeansVo
)
{
ReporterUtils
.
map
.
put
(
"dataBeansVo"
,
dataBeansVo
);
GenerateReporter
generateReporter
=
new
GenerateReporter
();
ReportMessage
reportMessage
=
generateReporter
.
generateReport
();
return
reportMessage
;
}
}
kt-base/src/main/java/org/matrix/testNg/
report
/DataBean.java
→
kt-base/src/main/java/org/matrix/testNg/
xml/reportXml
/DataBean.java
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
report
;
package
org
.
matrix
.
testNg
.
xml
.
reportXml
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.Data
;
...
...
kt-base/src/main/java/org/matrix/testNg/
report
/GenerateReporter.java
→
kt-base/src/main/java/org/matrix/testNg/
xml/reportXml
/GenerateReporter.java
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
report
;
package
org
.
matrix
.
testNg
.
xml
.
reportXml
;
import
freemarker.template.Configuration
;
import
freemarker.template.Configuration
;
import
freemarker.template.Template
;
import
freemarker.template.Template
;
import
freemarker.template.TemplateExceptionHandler
;
import
freemarker.template.TemplateExceptionHandler
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.
testNg.TestPigeon
;
import
org.matrix.
util.ReporterUtils
;
import
org.testng.*
;
import
org.testng.*
;
import
org.testng.xml.XmlSuite
;
import
org.testng.xml.XmlSuite
;
...
@@ -36,7 +36,7 @@ public class GenerateReporter implements IReporter {
...
@@ -36,7 +36,7 @@ public class GenerateReporter implements IReporter {
cfg
.
setDefaultEncoding
(
"UTF-8"
);
cfg
.
setDefaultEncoding
(
"UTF-8"
);
cfg
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
cfg
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
//freemaker的模板文件
//freemaker的模板文件
Template
temp
=
cfg
.
getTemplate
(
"overview.ftl"
);
Template
temp
=
cfg
.
getTemplate
(
"overview
Beautiful
.ftl"
);
Map
context
=
new
HashMap
();
Map
context
=
new
HashMap
();
for
(
ISuite
suite
:
suites
)
{
for
(
ISuite
suite
:
suites
)
{
Map
<
String
,
ISuiteResult
>
suiteResults
=
suite
.
getResults
();
Map
<
String
,
ISuiteResult
>
suiteResults
=
suite
.
getResults
();
...
@@ -70,8 +70,8 @@ public class GenerateReporter implements IReporter {
...
@@ -70,8 +70,8 @@ public class GenerateReporter implements IReporter {
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
GlobalException
(
e
.
getMessage
());
throw
new
GlobalException
(
e
.
getMessage
());
}
finally
{
}
finally
{
TestPigeon
.
resultMap
=
new
HashMap
<>();
ReporterUtils
.
resultMap
=
new
HashMap
<>();
TestPigeon
.
userResultMap
=
new
HashMap
<>();
ReporterUtils
.
userResultMap
=
new
HashMap
<>();
}
}
}
}
}
}
\ No newline at end of file
kt-base/src/main/java/org/matrix/testNg/
report
/ReportUnits.java
→
kt-base/src/main/java/org/matrix/testNg/
xml/reportXml
/ReportUnits.java
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
report
;
package
org
.
matrix
.
testNg
.
xml
.
reportXml
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.service.ITestCaseService
;
import
org.matrix.database.service.ITestCaseService
;
...
...
kt-base/src/main/java/org/matrix/testNg/
report
/ReporterData.java
→
kt-base/src/main/java/org/matrix/testNg/
xml/reportXml
/ReporterData.java
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
.
report
;
package
org
.
matrix
.
testNg
.
xml
.
reportXml
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.matrix.actuators.checkpoint.CheckPointResult
;
import
org.matrix.actuators.checkpoint.CheckPointResult
;
...
@@ -6,7 +6,7 @@ import org.matrix.actuators.usecase.TestCaseExecuteResult;
...
@@ -6,7 +6,7 @@ import org.matrix.actuators.usecase.TestCaseExecuteResult;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.entity.TestCase
;
import
org.matrix.database.service.ITestCaseService
;
import
org.matrix.database.service.ITestCaseService
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.
testNg.TestPigeon
;
import
org.matrix.
util.ReporterUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.testng.*
;
import
org.testng.*
;
...
@@ -72,12 +72,12 @@ public class ReporterData {
...
@@ -72,12 +72,12 @@ public class ReporterData {
ReportUnits
units
=
new
ReportUnits
();
ReportUnits
units
=
new
ReportUnits
();
for
(
ITestResult
result
:
sortByTime
(
map
.
getAllResults
()))
{
for
(
ITestResult
result
:
sortByTime
(
map
.
getAllResults
()))
{
List
<
TestCaseExecuteResult
>
testCaseExecuteResults
;
List
<
TestCaseExecuteResult
>
testCaseExecuteResults
;
Map
<
Long
,
List
<
TestCaseExecuteResult
>>
longListMap
=
TestPigeon
.
userResultMap
.
get
(
1L
);
Map
<
Long
,
List
<
TestCaseExecuteResult
>>
longListMap
=
ReporterUtils
.
userResultMap
.
get
(
1L
);
Set
<
Long
>
longs
=
longListMap
.
keySet
();
Set
<
Long
>
longs
=
longListMap
.
keySet
();
for
(
Long
caseId
:
longs
)
{
for
(
Long
caseId
:
longs
)
{
TestCase
testCase
=
java
.
util
.
Optional
.
of
(
testCaseService
.
getById
(
caseId
))
TestCase
testCase
=
java
.
util
.
Optional
.
of
(
testCaseService
.
getById
(
caseId
))
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到id = %d 的TestCase"
,
caseId
)));
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到id = %d 的TestCase"
,
caseId
)));
testCaseExecuteResults
=
TestPigeon
.
resultMap
.
get
(
caseId
);
testCaseExecuteResults
=
ReporterUtils
.
resultMap
.
get
(
caseId
);
for
(
TestCaseExecuteResult
testCaseExecuteResult
:
testCaseExecuteResults
)
{
for
(
TestCaseExecuteResult
testCaseExecuteResult
:
testCaseExecuteResults
)
{
data
.
setDuration
(
units
.
formatDuration
(
result
.
getEndMillis
()
data
.
setDuration
(
units
.
formatDuration
(
result
.
getEndMillis
()
-
result
.
getStartMillis
()));
-
result
.
getStartMillis
()));
...
...
kt-base/src/main/java/org/matrix/testNg/DataProviderForDb.java
→
kt-base/src/main/java/org/matrix/testNg/
xml/testXml/
DataProviderForDb.java
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
;
package
org
.
matrix
.
testNg
.
xml
.
testXml
;
import
java.sql.*
;
import
java.sql.*
;
import
java.util.HashMap
;
import
java.util.HashMap
;
...
@@ -13,6 +13,7 @@ public class DataProviderForDb implements Iterator<Object[]> {
...
@@ -13,6 +13,7 @@ public class DataProviderForDb implements Iterator<Object[]> {
ResultSet
resultSet
;
ResultSet
resultSet
;
ResultSetMetaData
resultSetMetaData
;
ResultSetMetaData
resultSetMetaData
;
Boolean
first
=
true
;
Boolean
first
=
true
;
public
DataProviderForDb
(
String
driver
,
String
url
public
DataProviderForDb
(
String
driver
,
String
url
,
String
userName
,
String
password
,
String
sql
)
{
,
String
userName
,
String
password
,
String
sql
)
{
try
{
try
{
...
@@ -28,10 +29,10 @@ public class DataProviderForDb implements Iterator<Object[]> {
...
@@ -28,10 +29,10 @@ public class DataProviderForDb implements Iterator<Object[]> {
@Override
@Override
public
boolean
hasNext
()
{
public
boolean
hasNext
()
{
if
(
first
){
if
(
first
)
{
first
=
false
;
first
=
false
;
return
true
;
return
true
;
}
else
{
}
else
{
boolean
flag
=
false
;
boolean
flag
=
false
;
try
{
try
{
flag
=
resultSet
.
next
();
flag
=
resultSet
.
next
();
...
...
kt-base/src/main/java/org/matrix/testNg/
TestPigeon
.java
→
kt-base/src/main/java/org/matrix/testNg/
xml/testXml/TestXml
.java
浏览文件 @
463e0ba2
package
org
.
matrix
.
testNg
;
package
org
.
matrix
.
testNg
.
xml
.
testXml
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -14,6 +14,7 @@ import org.matrix.database.service.ITestCaseService;
...
@@ -14,6 +14,7 @@ import org.matrix.database.service.ITestCaseService;
import
org.matrix.database.service.ITestDataService
;
import
org.matrix.database.service.ITestDataService
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.exception.GlobalException
;
import
org.matrix.socket.vo.CaseExecuteVo
;
import
org.matrix.socket.vo.CaseExecuteVo
;
import
org.matrix.util.ReporterUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.context.SpringBootTest
;
...
@@ -24,18 +25,22 @@ import org.testng.annotations.DataProvider;
...
@@ -24,18 +25,22 @@ import org.testng.annotations.DataProvider;
import
org.testng.annotations.Parameters
;
import
org.testng.annotations.Parameters
;
import
org.testng.annotations.Test
;
import
org.testng.annotations.Test
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
static
org
.
matrix
.
util
.
ReporterUtils
.
resultMap
;
/**
/**
* 执行xml测试
*
* @author mry
* @author mry
*/
*/
@Slf4j
@Slf4j
@Component
@Component
@SpringBootTest
(
classes
=
BaseBootApplication
.
class
)
@SpringBootTest
(
classes
=
BaseBootApplication
.
class
)
public
class
Test
Pigeon
extends
AbstractTestNGSpringContextTests
{
public
class
Test
Xml
extends
AbstractTestNGSpringContextTests
{
String
sql
;
String
sql
;
Long
envId
;
Long
envId
;
...
@@ -76,7 +81,6 @@ public class TestPigeon extends AbstractTestNGSpringContextTests {
...
@@ -76,7 +81,6 @@ public class TestPigeon extends AbstractTestNGSpringContextTests {
this
.
projectId
=
projectId
;
this
.
projectId
=
projectId
;
}
}
/**
/**
* XML中的SQL决定了执行什么用例, 执行多少条用例, SQL的搜索结果为需要测试的测试用例
* XML中的SQL决定了执行什么用例, 执行多少条用例, SQL的搜索结果为需要测试的测试用例
*/
*/
...
@@ -85,32 +89,29 @@ public class TestPigeon extends AbstractTestNGSpringContextTests {
...
@@ -85,32 +89,29 @@ public class TestPigeon extends AbstractTestNGSpringContextTests {
return
new
DataProviderForDb
(
driver
,
url
,
username
,
password
,
sql
);
return
new
DataProviderForDb
(
driver
,
url
,
username
,
password
,
sql
);
}
}
public
static
Map
<
Long
,
Map
<
Long
,
List
<
TestCaseExecuteResult
>>>
userResultMap
=
new
HashMap
<>();
public
static
Map
<
Long
,
List
<
TestCaseExecuteResult
>>
resultMap
=
new
HashMap
<>();
@Test
(
dataProvider
=
"testData"
)
@Test
(
dataProvider
=
"testData"
)
public
void
test
(
Map
<
String
,
String
>
data
)
{
public
void
test
(
Map
<
String
,
String
>
data
)
{
//
log.info("这是testData");
log
.
info
(
"这是testData"
);
//
String id = data.get("id");
String
id
=
data
.
get
(
"id"
);
//
long caseId = Long.parseLong(id);
long
caseId
=
Long
.
parseLong
(
id
);
//
TestCase testCase = java.util.Optional.of(caseService.getById(caseId))
TestCase
testCase
=
java
.
util
.
Optional
.
of
(
caseService
.
getById
(
caseId
))
//
.orElseThrow(() -> new GlobalException(String.format("没有找到id = %d 的TestCase", caseId)));
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到id = %d 的TestCase"
,
caseId
)));
//
List<TestData> testDataList = java.util.Optional.of(dataService.list(Wrappers.lambdaQuery(TestData.class)
List
<
TestData
>
testDataList
=
java
.
util
.
Optional
.
of
(
dataService
.
list
(
Wrappers
.
lambdaQuery
(
TestData
.
class
)
//
.eq(TestData::getTestCaseId, caseId)))
.
eq
(
TestData:
:
getTestCaseId
,
caseId
)))
//
.orElseThrow(() -> new GlobalException(String.format("没有找到testCaseId = %d 的TestData", caseId)));
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到testCaseId = %d 的TestData"
,
caseId
)));
//
CaseExecuteVo caseExecuteVo = new CaseExecuteVo();
CaseExecuteVo
caseExecuteVo
=
new
CaseExecuteVo
();
// caseExecuteVo.setProjectId(testCase.getProjectId()
);
caseExecuteVo
.
setProjectId
(
projectId
);
//
caseExecuteVo.setEnvId(envId);
caseExecuteVo
.
setEnvId
(
envId
);
//
caseExecuteVo.setUserId(1L);
caseExecuteVo
.
setUserId
(
1L
);
//
caseExecuteVo.getTestCaseListDataBtoList().add(
caseExecuteVo
.
getTestCaseListDataBtoList
().
add
(
//
new TestCaseListDataBto(
new
TestCaseListDataBto
(
//
testCase,
testCase
,
//
testDataList
testDataList
//
)
)
//
);
);
//
List<TestCaseExecuteResult> testCaseExecuteResults = caseActuator.runTestCase(null, caseExecuteVo);
List
<
TestCaseExecuteResult
>
testCaseExecuteResults
=
caseActuator
.
runTestCase
(
null
,
caseExecuteVo
);
//
resultMap.put(caseId, testCaseExecuteResults);
resultMap
.
put
(
caseId
,
testCaseExecuteResults
);
//
userResultMap.put(1L, resultMap);
ReporterUtils
.
userResultMap
.
put
(
1L
,
resultMap
);
}
}
...
...
kt-base/src/main/java/org/matrix/util/ReporterUtils.java
0 → 100644
浏览文件 @
463e0ba2
package
org
.
matrix
.
util
;
import
org.matrix.actuators.usecase.TestCaseExecuteResult
;
import
org.matrix.testNg.web.entity.DataBeansVo
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author MRY
*/
public
class
ReporterUtils
{
public
static
Map
<
Long
,
Map
<
Long
,
List
<
TestCaseExecuteResult
>>>
userResultMap
=
new
HashMap
<>();
public
static
Map
<
Long
,
List
<
TestCaseExecuteResult
>>
resultMap
=
new
HashMap
<>();
public
static
Map
<
String
,
DataBeansVo
>
map
=
new
HashMap
<>();
public
static
Map
<
String
,
String
>
mapUrl
=
new
HashMap
<>();
}
kt-base/src/main/resources/application.yml
浏览文件 @
463e0ba2
...
@@ -11,11 +11,11 @@ spring:
...
@@ -11,11 +11,11 @@ spring:
url
:
jdbc:mysql://192.168.100.248:3306/key_stone?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
url
:
jdbc:mysql://192.168.100.248:3306/key_stone?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
username
:
root
username
:
root
password
:
root
password
:
root
zentao
:
#
zentao:
driverClassName
:
com.mysql.cj.jdbc.Driver
#
driverClassName: com.mysql.cj.jdbc.Driver
url
:
jdbc:mysql://192.168.100.247:3306/zentao?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&&zeroDateTimeBehavior=convertToNull
#
url: jdbc:mysql://192.168.100.247:3306/zentao?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&&zeroDateTimeBehavior=convertToNull
username
:
root
#
username: root
password
:
123456
#
password: 123456
mybatis-plus
:
mybatis-plus
:
type-enums-package
:
org.matrix.enums
type-enums-package
:
org.matrix.enums
...
...
kt-base/src/main/resources/templates/index.html
浏览文件 @
463e0ba2
差异被折叠。
点击展开。
kt-base/src/main/resources/templates/overview.ftl
浏览文件 @
463e0ba2
...
@@ -129,7 +129,11 @@
...
@@ -129,7 +129,11 @@
<div
class=
"failBtn"
>
失败
</div>
<
#--
<th>
执行结果
</th>
-->
<div
class=
"failBtn"
>
失败
</div>
<
#--
<th>
执行结果
</th>
-->
</td>
</td>
<td>
${failCase.duration!}
</td>
<
#--
<th>
执行时间(s)
</th>
-->
<td>
${failCase.duration!}
</td>
<
#--
<th>
执行时间(s)
</th>
-->
<td>
${failCase.throwable!}
</td>
<
#--
<th>
结果信息
</th>
-->
<td>
${failCase.throwable!}
</br>
<
#--
<th>
结果信息
</th>
-->
${failCase.resultMessage!}
</td>
</tr>
</tr>
<
/#list>
<
/#list>
<
#list pass as passCase>
<
#list pass as passCase>
...
...
kt-base/src/main/resources/templates/overviewBeautiful.ftl
0 → 100644
浏览文件 @
463e0ba2
This source diff could not be displayed because it is too large. You can
view the blob
instead.
kt-script/src/main/java/org/matrix/testng.xml
浏览文件 @
463e0ba2
差异被折叠。
点击展开。
pom.xml
浏览文件 @
463e0ba2
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论