Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
kt-keystone
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
kt-keystone
Commits
140784c0
提交
140784c0
authored
3月 17, 2022
作者:
mry
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(base): 生成简陋报告,完成了基本功能
上级
efbe03c3
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
81 行增加
和
373 行删除
+81
-373
GenerateReporter.java
...n/java/org/matrix/testNg/web/report/GenerateReporter.java
+21
-12
GenerateReporterJob.java
...ava/org/matrix/testNg/web/report/GenerateReporterJob.java
+20
-9
GenerateReporter.java
...ava/org/matrix/testNg/xml/reportXml/GenerateReporter.java
+3
-2
ReporterData.java
...in/java/org/matrix/testNg/xml/reportXml/ReporterData.java
+34
-33
ReporterUtils.java
kt-base/src/main/java/org/matrix/util/ReporterUtils.java
+3
-3
index.html
kt-base/src/main/resources/templates/index.html
+0
-155
overview.ftl
kt-base/src/main/resources/templates/overview.ftl
+0
-159
overviewBeautiful.ftl
kt-base/src/main/resources/templates/overviewBeautiful.ftl
+0
-0
overviewBeautifuls.ftl
kt-base/src/main/resources/templates/overviewBeautifuls.ftl
+0
-0
overviews.ftl
kt-base/src/main/resources/templates/overviews.ftl
+0
-0
pom.xml
kt-web/pom.xml
+0
-0
没有找到文件。
kt-base/src/main/java/org/matrix/testNg/web/report/GenerateReporter.java
浏览文件 @
140784c0
...
...
@@ -5,29 +5,28 @@ 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.DataMove
;
import
org.matrix.testNg.web.entity.DataBeans
;
import
org.matrix.testNg.web.entity.DataMove
;
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
;
import
java.util.UUID
;
/**
* @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"
;
private
static
final
String
OUTPUT_FOLDER
=
System
.
getProperty
(
"user.dir"
)
+
"/htmls"
;
private
static
final
String
FILE_NAME
=
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
)
+
".html"
;
FileOutputStream
out
;
Writer
writer
;
public
ReportMessage
generateReport
()
{
try
{
...
...
@@ -35,7 +34,7 @@ public class GenerateReporter {
cfg
.
setClassForTemplateLoading
(
this
.
getClass
(),
"/templates"
);
cfg
.
setDefaultEncoding
(
"UTF-8"
);
cfg
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
Template
temp
=
cfg
.
getTemplate
(
"overview.ftl"
);
Template
temp
=
cfg
.
getTemplate
(
"overview
Beautiful
.ftl"
);
Map
context
=
new
HashMap
();
ReporterData
reporterData
=
new
ReporterData
();
DataBean
dataBean
=
reporterData
.
testDataBean
();
...
...
@@ -57,17 +56,27 @@ public class GenerateReporter {
reportDir
.
mkdir
();
}
// 输出流
FileOutputStream
out
=
new
FileOutputStream
(
OUTPUT_FOLDER
+
"/"
+
FILE_NAME
);
Writer
writer
=
new
BufferedWriter
(
new
OutputStreamWriter
(
out
,
StandardCharsets
.
UTF_8
));
out
=
new
FileOutputStream
(
OUTPUT_FOLDER
+
"/"
+
FILE_NAME
);
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
);
reportMessage
.
setUrl
(
"/report
/"
+
FILE_NAME
);
return
reportMessage
;
}
catch
(
Exception
e
)
{
throw
new
GlobalException
(
e
.
getMessage
());
}
finally
{
try
{
out
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
try
{
writer
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
ReporterUtils
.
map
=
new
HashMap
<>();
}
}
...
...
kt-base/src/main/java/org/matrix/testNg/web/report/GenerateReporterJob.java
浏览文件 @
140784c0
...
...
@@ -17,17 +17,18 @@ import java.time.format.DateTimeFormatter;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.UUID
;
/**
* @author MRY
*/
public
class
GenerateReporterJob
{
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"
;
private
static
final
String
OUTPUT_FOLDER
=
System
.
getProperty
(
"user.dir"
)
+
"/htmls"
;
private
static
final
String
FILE_NAME
=
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
)
+
".html"
;
FileOutputStream
out
;
Writer
writer
;
public
ReportMessage
generateReport
()
{
try
{
...
...
@@ -35,7 +36,7 @@ public class GenerateReporterJob {
cfg
.
setClassForTemplateLoading
(
this
.
getClass
(),
"/templates"
);
cfg
.
setDefaultEncoding
(
"UTF-8"
);
cfg
.
setTemplateExceptionHandler
(
TemplateExceptionHandler
.
RETHROW_HANDLER
);
Template
temp
=
cfg
.
getTemplate
(
"overviews.ftl"
);
Template
temp
=
cfg
.
getTemplate
(
"overview
Beautiful
s.ftl"
);
Map
context
=
new
HashMap
();
ReporterDataJob
reporterDatajob
=
new
ReporterDataJob
();
DataBean
dataBean
=
reporterDatajob
.
testDataBean
();
...
...
@@ -57,17 +58,27 @@ public class GenerateReporterJob {
reportDir
.
mkdir
();
}
// 输出流
FileOutputStream
out
=
new
FileOutputStream
(
OUTPUT_FOLDER
+
"/"
+
FILE_NAME
);
Writer
writer
=
new
BufferedWriter
(
new
OutputStreamWriter
(
out
,
StandardCharsets
.
UTF_8
));
out
=
new
FileOutputStream
(
OUTPUT_FOLDER
+
"/"
+
FILE_NAME
);
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
);
reportMessage
.
setUrl
(
"/report
/"
+
FILE_NAME
);
return
reportMessage
;
}
catch
(
Exception
e
)
{
throw
new
GlobalException
(
e
.
getMessage
());
}
finally
{
try
{
out
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
try
{
writer
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
ReporterUtils
.
jobMap
=
new
HashMap
<>();
}
}
...
...
kt-base/src/main/java/org/matrix/testNg/xml/reportXml/GenerateReporter.java
浏览文件 @
140784c0
...
...
@@ -70,8 +70,8 @@ public class GenerateReporter implements IReporter {
}
catch
(
Exception
e
)
{
throw
new
GlobalException
(
e
.
getMessage
());
}
finally
{
ReporterUtils
.
resultMap
=
new
HashMap
<>();
ReporterUtils
.
userResultMap
=
new
HashMap
<>();
//
ReporterUtils.resultMap = new HashMap<>();
//
ReporterUtils.userResultMap = new HashMap<>();
}
}
}
\ No newline at end of file
kt-base/src/main/java/org/matrix/testNg/xml/reportXml/ReporterData.java
浏览文件 @
140784c0
...
...
@@ -68,39 +68,39 @@ public class ReporterData {
DataBean
data
=
new
DataBean
();
// 测试结果详细数据
List
<
DataBean
>
list
=
new
ArrayList
<
DataBean
>();
//工具类
ReportUnits
units
=
new
ReportUnits
();
for
(
ITestResult
result
:
sortByTime
(
map
.
getAllResults
()))
{
List
<
TestDataExecuteResult
>
testDataExecuteResults
;
Map
<
Long
,
List
<
TestDataExecuteResult
>>
longListMap
=
ReporterUtils
.
userResultMap
.
get
(
1L
);
Set
<
Long
>
longs
=
longListMap
.
keySet
();
for
(
Long
caseId
:
longs
)
{
TestCase
testCase
=
java
.
util
.
Optional
.
of
(
testCaseService
.
getById
(
caseId
))
.
orElseThrow
(()
->
new
GlobalException
(
String
.
format
(
"没有找到id = %d 的TestCase"
,
caseId
)));
testDataExecuteResults
=
ReporterUtils
.
resultMap
.
get
(
caseId
);
for
(
TestDataExecuteResult
testDataExecuteResult
:
testDataExecuteResults
)
{
data
.
setDuration
(
units
.
formatDuration
(
result
.
getEndMillis
()
-
result
.
getStartMillis
()));
data
.
setParams
(
units
.
getParams
(
result
));
CheckPointResult
checkPointResult
=
testDataExecuteResult
.
getCheckPointResult
();
data
.
setTestCaseName
(
testCase
.
getName
());
data
.
setOutput
(
Reporter
.
getOutput
(
result
));
data
.
setDependMethod
(
units
.
getDependMethods
(
result
));
data
.
setType
(
String
.
valueOf
(
testCase
.
getType
()));
data
.
setDetail
(
testCase
.
getDetail
());
data
.
setMoveBefore
(
testCase
.
getMoveBefore
());
data
.
setMoveAfterCase
(
testCase
.
getMoveAfterCase
());
data
.
setMoveAfterTest
(
testCase
.
getMoveAfterTest
());
data
.
setDescription
(
testCase
.
getDes
());
data
.
setResultMessage
(
checkPointResult
);
data
.
setThrowable
(
result
.
getThrowable
());
if
(
result
.
getThrowable
()
!=
null
)
{
data
.
setStackTrace
(
result
.
getThrowable
().
getStackTrace
());
}
}
}
list
.
add
(
data
);
}
//
//工具类
//
ReportUnits units = new ReportUnits();
//
for (ITestResult result : sortByTime(map.getAllResults())) {
//
List<TestDataExecuteResult> testDataExecuteResults;
//
Map<Long, List<TestDataExecuteResult>> longListMap = ReporterUtils.userResultMap.get(1L);
//
Set<Long> longs = longListMap.keySet();
//
for (Long caseId : longs) {
//
TestCase testCase = java.util.Optional.of(testCaseService.getById(caseId))
//
.orElseThrow(() -> new GlobalException(String.format("没有找到id = %d 的TestCase", caseId)));
//
testDataExecuteResults = ReporterUtils.resultMap.get(caseId);
//
for (TestDataExecuteResult testDataExecuteResult : testDataExecuteResults) {
//
data.setDuration(units.formatDuration(result.getEndMillis()
//
- result.getStartMillis()));
//
data.setParams(units.getParams(result));
//
CheckPointResult checkPointResult = testDataExecuteResult.getCheckPointResult();
//
data.setTestCaseName(testCase.getName());
//
data.setOutput(Reporter.getOutput(result));
//
data.setDependMethod(units.getDependMethods(result));
//
data.setType(String.valueOf(testCase.getType()));
//
data.setDetail(testCase.getDetail());
//
data.setMoveBefore(testCase.getMoveBefore());
//
data.setMoveAfterCase(testCase.getMoveAfterCase());
//
data.setMoveAfterTest(testCase.getMoveAfterTest());
//
data.setDescription(testCase.getDes());
//
data.setResultMessage(checkPointResult);
//
data.setThrowable(result.getThrowable());
//
if (result.getThrowable() != null) {
//
data.setStackTrace(result.getThrowable().getStackTrace());
//
}
//
}
//
}
//
list.add(data);
//
}
return
list
;
}
}
\ No newline at end of file
kt-base/src/main/java/org/matrix/util/ReporterUtils.java
浏览文件 @
140784c0
package
org
.
matrix
.
util
;
import
org.matrix.actuators.usecase.TestCaseExecuteResult
;
//
import org.matrix.actuators.usecase.TestCaseExecuteResult;
import
org.matrix.testNg.web.vo.DataBeansJobVo
;
import
org.matrix.testNg.web.vo.DataBeansVo
;
...
...
@@ -13,9 +13,9 @@ import java.util.Map;
*/
public
class
ReporterUtils
{
public
static
Map
<
Long
,
Map
<
Long
,
List
<
TestCaseExecuteResult
>>>
userResultMap
=
new
HashMap
<>();
//
public static Map<Long, Map<Long, List<TestCaseExecuteResult>>> userResultMap = new HashMap<>();
public
static
Map
<
Long
,
List
<
TestCaseExecuteResult
>>
resultMap
=
new
HashMap
<>();
//
public static Map<Long, List<TestCaseExecuteResult>> resultMap = new HashMap<>();
public
static
Map
<
String
,
DataBeansVo
>
map
=
new
HashMap
<>();
...
...
kt-base/src/main/resources/templates/index.html
deleted
100644 → 0
浏览文件 @
efbe03c3
<?xml version="1.0" encoding="utf-8" ?>
<head>
<title>
test
</title>
<meta
http-equiv=
"Content-Type"
content=
"text/html;charset=utf-8"
/>
<meta
name=
"description"
content=
"TestNG unit test results."
/>
<style
type=
"text/css"
>
body
{
margin
:
10px
20px
;
font-size
:
14px
;
font-family
:
"Arial"
,
"Microsoft YaHei"
,
"黑体"
,
"宋体"
,
sans-serif
;
}
.successBtn
{
width
:
60px
;
padding
:
3px
;
background-color
:
#58ab48
;
border-color
:
#58ab48
;
color
:
#fff
;
-moz-border-radius
:
10px
;
-webkit-border-radius
:
10px
;
border-radius
:
10px
;
-khtml-border-radius
:
10px
;
text-align
:
center
;
vertical-align
:
middle
;
border
:
1px
solid
transparent
;
font-weight
:
500
;
}
.failBtn
{
width
:
60px
;
padding
:
3px
;
background-color
:
#ab2e2d
;
border-color
:
#ab2e2d
;
color
:
#fff
;
-moz-border-radius
:
10px
;
-webkit-border-radius
:
10px
;
border-radius
:
10px
;
/* future proofing */
-khtml-border-radius
:
10px
;
/* for old Konqueror browsers */
text-align
:
center
;
vertical-align
:
middle
;
border
:
1px
solid
transparent
;
font-weight
:
500
;
}
</style>
<style>
/* Border styles */
.tabNoBorder
thead
,
.tabNoBorder
tr
{
border-top-width
:
1px
;
border-top-style
:
solid
;
border-top-color
:
rgb
(
211
,
202
,
221
);
}
.tabNoBorder
{
border-bottom-width
:
1px
;
border-bottom-style
:
solid
;
border-bottom-color
:
rgb
(
211
,
202
,
221
);
}
/* Padding and font style */
.tabNoBorder
td
,
.tabNoBorder
th
{
padding
:
5px
10px
;
font-size
:
14px
;
font-family
:
Verdana
;
color
:
rgb
(
95
,
74
,
121
);
}
/* Alternating background colors */
.tabNoBorder
tr
:nth-child
(
even
)
{
background
:
rgb
(
223
,
216
,
232
)
}
.tabNoBorder
tr
:nth-child
(
odd
)
{
background
:
#FFF
}
</style>
</head>
<body>
<br/>
<h2>
Summary
</h2>
<table
id=
"summary"
class=
"tabNoBorder"
>
<tr
class=
"columnHeadings"
>
<th>
用例总数
</th>
<th>
执行通过
</th>
<th>
执行失败
</th>
<th>
执行时间(s)
</th>
<th>
用例通过率
</th>
</tr>
<tr>
<td>
${overView.total}
</td><
#
--
用例总数
--
>
<td>
${overView.passNum}
</td><
#
--
执行通过
--
>
<td>
${overView.failNum}
</td><
#
--
执行失败
--
>
<td>
${overView.allTime}
</td><
#
--
执行时间(
s
)
--
>
<td>
${overView.probability}
</td><
#
--
用例通过率
--
>
</tr>
</table>
<br/><br/>
<table
id=
"moveAction"
class=
"tabNoBorder"
>
<tr
class=
"columnHeadings"
>
<th>
前置动作
</th>
<th>
中置动作
</th>
<th>
后置动作
</th>
</tr>
<tr>
<td>
${move.moveBefore}
</td><
#
--
用例总数
--
>
<td>
${move.moveAfterCase}
</td><
#
--
未执行用例数
--
>
<td>
${move.moveAfterTest}
</td><
#
--
执行通过
--
>
</tr>
</table>
<br/><br/>
<h2>
Detail
</h2>
<table
class=
"tabNoBorder"
>
<tr
class=
"columnHeadings"
>
<th>
编号
</th>
<th>
用例名称
</th>
<th>
用例类型
</th>
<th>
详细参数
</th>
<th>
用例描述
</th>
<th>
执行结果
</th>
<th>
执行时间(s)
</th>
<th>
结果信息
</th>
</tr>
<
#
assign
caseNo =
0
>
<
#
list
fail
as
failCase
>
<tr>
<
#
assign
caseNo=
caseNo+1
>
<td>
${caseNo}
</td><
#
--
编号
--
>
<td>
${failCase.testCaseName!}
</td><
#
--
用例名称
--
>
<td>
${failCase.type!}
</td><
#
--
用例类型
--
>
<td>
${failCase.detail!}
</td><
#
--
详细参数
--
>
<td>
${failCase.description!}
</td><
#
--
用例描述
--
>
<td>
${failCase.result}
</td>
<td>
${failCase.duration!}
</td><
#
--
<
th
>
执行时间(s)
</th>
-->
<td>
${failCase.resultMessage!}
</td>
</tr>
</
#
list>
<
#
list
pass
as
passCase
>
<tr>
<
#
assign
caseNo=
caseNo+1
>
<td>
${caseNo}
</td><
#
--
编号
--
>
<td>
${passCase.testCaseName!}
</td><
#
--
用例名称
--
>
<td>
${passCase.type!}
</td><
#
--
用例类型
--
>
<td>
${passCase.detail!}
</td><
#
--
详细参数
--
>
<td>
${passCase.moveBefore!}
</td><
#
--
前置动作
--
>
<td>
${passCase.moveAfterCase!}
</td><
#
--
中间动作
--
>
<td>
${passCase.moveAfterTest!}
</td><
#
--
后置动作
--
>
<td>
${passCase.description}
</td><
#
--
用例描述
--
>
<td>
${passCase.result}
</td>
<td>
${passCase.duration!}
</td><
#
--
执行时间(
s
)
--
>
<td>
${passCase.resultMessage!}
</td><
#
--
结果信息
--
>
</tr>
</
#
list>
</table>
</body>
</html>
\ No newline at end of file
kt-base/src/main/resources/templates/overview.ftl
deleted
100644 → 0
浏览文件 @
efbe03c3
<?xml version="1.0" encoding="utf-8" ?>
<head>
<title>
test
</title>
<meta
http-equiv=
"Content-Type"
content=
"text/html;charset=utf-8"
/>
<meta
name=
"description"
content=
"TestNG unit test results."
/>
<style
type=
"text/css"
>
body {
margin: 10px 20px;
font-size: 14px;
font-family: "Arial", "Microsoft YaHei", "黑体", "宋体", sans-serif;
}
.successBtn {
width: 60px;
padding: 3px;
background-color: #58ab48;
border-color: #58ab48;
color: #fff;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;
-khtml-border-radius: 10px;
text-align: center;
vertical-align: middle;
border: 1px solid transparent;
font-weight: 500;
}
.failBtn {
width: 60px;
padding: 3px;
background-color: #ab2e2d;
border-color: #ab2e2d;
color: #fff;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px; /* future proofing */
-khtml-border-radius: 10px; /* for old Konqueror browsers */
text-align: center;
vertical-align: middle;
border: 1px solid transparent;
font-weight: 500;
}
</style>
<style>
/* Border styles */
.tabNoBorder thead, .tabNoBorder tr {
border-top-width: 1px;
border-top-style: solid;
border-top-color: rgb(211, 202, 221);
}
.tabNoBorder {
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: rgb(211, 202, 221);
}
/* Padding and font style */
.tabNoBorder td, .tabNoBorder th {
padding: 5px 10px;
font-size: 14px;
font-family: Verdana;
color: rgb(95, 74, 121);
}
/* Alternating background colors */
.tabNoBorder tr:nth-child(even) {
background: rgb(223, 216, 232)
}
.tabNoBorder tr:nth-child(odd) {
background: #FFF
}
</style>
</head>
<body>
<br/>
<h2>
Summary
</h2>
<table
id=
"summary"
class=
"tabNoBorder"
>
<tr
class=
"columnHeadings"
>
<th>
用例总数
</th>
<th>
执行通过
</th>
<th>
执行失败
</th>
<th>
执行时间(s)
</th>
<th>
用例通过率
</th>
</tr>
<tr>
<td>
${overView.total!}
</td>
<
#--用例总数-->
<td>
${overView.passNum!}
</td>
<
#--执行通过-->
<td>
${overView.failNum!}
</td>
<
#--执行失败-->
<td>
${overView.allTime!}
</td>
<
#--执行时间(s)-->
<td>
${overView.probability!}
</td>
<
#--用例通过率-->
</tr>
</table>
<br/><br/>
<h2>
Move
</h2>
<table
id=
"move"
class=
"tabNoBorder"
>
<tr
class=
"columnHeadings"
>
<th>
前置动作
</th>
<th>
中置动作
</th>
<th>
后置动作
</th>
</tr>
<tr>
<td>
${move.moveBefore!无}
</td>
<
#--用例总数-->
<td>
${move.moveAfterCase!无}
</td>
<
#--未执行用例数-->
<td>
${move.moveAfterTest!无}
</td>
<
#--执行通过-->
</tr>
</table>
<br/><br/>
<h2>
Detail
</h2>
<table
class=
"tabNoBorder"
>
<tr
class=
"columnHeadings"
>
<th>
编号
</th>
<th>
用例名称
</th>
<th>
用例类型
</th>
<th>
详细参数
</th>
<th>
用例描述
</th>
<th>
执行结果
</th>
<th>
执行时间(s)
</th>
<th>
结果信息
</th>
</tr>
<
#assign caseNo = 0>
<
#if fail ??>
<
#list fail as failCase>
<tr>
<
#assign caseNo=caseNo+1>
<td>
${caseNo}
</td>
<
#--编号-->
<td>
${failCase.testCaseName!'无'}
</td>
<
#--用例名称-->
<td>
${failCase.type!'无'}
</td>
<
#--用例类型-->
<td>
${failCase.detail!'无'}
</td>
<
#--详细参数-->
<td>
${failCase.description!'无'}
</td>
<
#--用例描述-->
<td>
${failCase.result?c}
</td>
<td>
${failCase.duration!'无'}
</td>
<
#--
<th>
执行时间(s)
</th>
-->
<td>
${failCase.resultMessage!'无'}
</td>
</tr>
<
/#list>
<
#else>
<
/#if>
<
#if pass ??>
<
#list pass as passCase>
<tr>
<
#assign caseNo=caseNo+1>
<td>
${caseNo}
</td>
<
#--编号-->
<td>
${passCase.testCaseName!"无"}
</td>
<
#--用例名称-->
<td>
${passCase.type!'无'}
</td>
<
#--用例类型-->
<td>
${passCase.detail!'无'}
</td>
<
#--详细参数-->
<td>
${passCase.description!'无'}
</td>
<
#--用例描述-->
<td>
${passCase.result?c}
</td>
<td>
${passCase.duration!'无'}
</td>
<
#--执行时间(s)-->
<td>
${passCase.resultMessage!'无'}
</td>
<
#--结果信息-->
</tr>
<
/#list>
<
#else>
<
/#if>
</table>
</body>
</html>
\ No newline at end of file
kt-base/src/main/resources/templates/overviewBeautiful.ftl
浏览文件 @
140784c0
差异被折叠。
点击展开。
kt-base/src/main/resources/templates/overviewBeautifuls.ftl
0 → 100644
浏览文件 @
140784c0
This source diff could not be displayed because it is too large. You can
view the blob
instead.
kt-base/src/main/resources/templates/overviews.ftl
deleted
100644 → 0
浏览文件 @
efbe03c3
差异被折叠。
点击展开。
kt-web/pom.xml
浏览文件 @
140784c0
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论