133.md 6.7 KB
Newer Older
W
wizardforcel 已提交
1
# 10C 高级 WebDriver – JUnit 报表自定义
W
init  
wizardforcel 已提交
2 3 4

> 原文: [https://javabeginnerstutorial.com/selenium/10c-advanced-webdriver-junit-report-customization/](https://javabeginnerstutorial.com/selenium/10c-advanced-webdriver-junit-report-customization/)

W
wizardforcel 已提交
5
自定义! 谁不喜欢自己作品中的某些独特之处? 让我们在[Apache ANT 生成的 JUnit 报告上添加一些糖霜](https://javabeginnerstutorial.com/selenium/10b-advanced-webdriver-generating-junit-reports/),通过引入一些优点使其看起来更漂亮。
W
init  
wizardforcel 已提交
6

W
wizardforcel 已提交
7
作为自定义自动生成报告的第一步,让我们了解其背后的代码(来自`Build.xml`),
W
init  
wizardforcel 已提交
8 9 10 11 12 13 14 15 16 17

```java
<junitreport todir="junit">
    <fileset dir="junit">
        <include name="TEST-*.xml"/>
    </fileset>
    <report format="frames" todir="junit/report"/>
</junitreport>
```

W
wizardforcel 已提交
18
Apache ANT 的`JunitReport`任务通过执行以下步骤来生成报告,
W
init  
wizardforcel 已提交
19

W
wizardforcel 已提交
20
*   JUnit 任务生成的所有单个 XML 文件都被合并并命名为`TESTS-TestSuites.xml`
W
wizardforcel 已提交
21 22
*   CSS 样式应用于合并后的文档
*   最终的可浏览报告以 HTML 格式提供
W
init  
wizardforcel 已提交
23 24 25

`<junitreport todir="junit">`

W
wizardforcel 已提交
26
属性“`todir`”指定了将合并的 XML 文件保存到的目录。 如果未指定任何内容,则默认为当前目录。
W
init  
wizardforcel 已提交
27 28 29 30 31 32 33

```java
<fileset dir="junit">
    <include name="TEST-*.xml"/>
</fileset> 
```

W
wizardforcel 已提交
34
**注意***所有单独的 JUnit 测试都是通过“junit” ANT 任务执行的,生成的 XML 文件为 生成的名称使用“`outfile`”属性指定。 如果未提及名称,则默认值为“`TEST-name`”(其中`name`是在 junit 任务的`name`属性中指定的测试名称)。*
W
init  
wizardforcel 已提交
35

W
wizardforcel 已提交
36
使用`fileset`元素,`junitreport`会从“`dir`”中提到的给定目录中收集所有单个 XML 文件,并根据上述代码段考虑所有以“`TEST-`”开头的文件。
W
init  
wizardforcel 已提交
37 38 39 40 41

`<report format="frames" todir="junit/report"/>`

这是从合并文件生成可浏览报告的确切任务。

W
wizardforcel 已提交
42
属性“格式”指定可用于生成报告的两种可用格式之一。 它们必须是“`frames`”或“`noframes`”。 如果未指定任何内容,则默认为“帧”格式。 “`todir`”属性指定生成的报告必须保存到的目录。
W
init  
wizardforcel 已提交
43

W
wizardforcel 已提交
44
*`frames`”格式将生成一个报告,该报告将包含具有重定向功能的多个文件,并使用样式表来实现此效果。 这是一种更具可读性的格式。
W
wizardforcel 已提交
45
*`noframes`”格式会生成一个名为“`junit-noframes.html`”的文件,没有任何框架,并且不使用任何类型的重定向。 这种类型更适合作为电子邮件附件发送或生成 pdf 文件。
W
init  
wizardforcel 已提交
46 47 48

既然您已经了解了事物的内在运作方式,那么让我们进入有趣的部分(可能比拥有圣代冰淇淋更有趣)!

W
wizardforcel 已提交
49
与那些无聊的自动生成的报告说再见,并欢迎**自定义**! 这意味着,我们将要编写或编辑某些内容。 那就是一个 XSL 文件,它位于下载的`apache-ant-1.10.2-bin.zip`的“`etc`”目录中。 让我们走简单的路线,就是编辑!
W
init  
wizardforcel 已提交
50 51 52

还记得吗,我们有两种格式? 因此,要自定义:

W
wizardforcel 已提交
53
*   框架 – 编辑`junit-frames.xsl`
W
wizardforcel 已提交
54
*   无框架 – 编辑`junit-noframes.xsl`
W
init  
wizardforcel 已提交
55

W
wizardforcel 已提交
56
就我而言,这两个 XSL 文件都位于“`E:\apache-ant-1.10.2\etc`”路径中。 作为本文的一部分,让我们研究“框架”格式。 这意味着我们将编辑“`junit-frames.xsl`”文件。 复制此文件并将其粘贴到项目路径中。 不要重命名文件。 为了使所有更改都能正常进行,请向报告任务添加属性`styledir`,如下所示。 这指定了定义的样式表`junit-frames.xsl`的位置。 `.`指定此样式表位于当前目录中(与构建文件的目录相同)。
W
init  
wizardforcel 已提交
57 58 59 60 61 62

`<report styledir="." format="frames" todir="junit/report"/>`

今天我们将深入探讨以下内容,

*   更改标题和描述
W
wizardforcel 已提交
63
*   增加栈跟踪字体大小
W
init  
wizardforcel 已提交
64 65 66 67 68 69 70 71

在下面的文章中,我们还将介绍

*   添加或删除列
*   改变风格
*   在标题部分添加徽标
*   修改静态文字

W
wizardforcel 已提交
72
**注意**:因此,所有更改都是对放置在项目目录“`E:\Selenium\`”(其中 Selenium 中的“`junit-frames.xsl`”)进行的 在我的情况下是项目名称)。*
W
init  
wizardforcel 已提交
73

W
wizardforcel 已提交
74
## 更改报告标题和描述
W
init  
wizardforcel 已提交
75

W
wizardforcel 已提交
76
在项目位置的“`junit-frames.xsl`”样式表中,
W
init  
wizardforcel 已提交
77

W
wizardforcel 已提交
78
1.将参数名称的文本(标题为`TITLE`)更改为“`JUnit Report`”。
W
init  
wizardforcel 已提交
79

W
wizardforcel 已提交
80
#### 之前
W
init  
wizardforcel 已提交
81

W
wizardforcel 已提交
82 83 84
```xml
<xsl:param name="TITLE">Unit Test Results.</xsl:param>
```
W
init  
wizardforcel 已提交
85 86 87

#### 之后

W
wizardforcel 已提交
88 89 90 91
```xml
<!-- <xsl:param name="TITLE">Unit Test Results.</xsl:param> -->
<xsl:param name="TITLE">JUnit Report</xsl:param>
```
W
init  
wizardforcel 已提交
92

W
wizardforcel 已提交
93
2.“页眉”部分负责显示标题和右侧显示的说明。 将它们分别更改为“自定义 JUnit 报告”和“由忍者设计!”。
W
init  
wizardforcel 已提交
94

W
wizardforcel 已提交
95
#### 之前
W
init  
wizardforcel 已提交
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110

```java
<!-- Page HEADER -->
<xsl:template name="pageHeader">
    <h1><xsl:value-of select="$TITLE"/></h1>
    <table width="100%">
    <tr>
        <td align="left"></td>
        <td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://ant.apache.org/">Ant</a>.</td>
    </tr>
    </table>
    <hr size="1"/>
</xsl:template>
```

W
wizardforcel 已提交
111
![Before Title Customization](img/105704c5b193643f7f113ac0be161c95.png)
W
init  
wizardforcel 已提交
112

W
wizardforcel 已提交
113
#### 之后
W
wizardforcel 已提交
114 115

```xml
W
wizardforcel 已提交
116 117 118 119 120 121 122 123 124 125 126 127
<xsl:template name="pageHeader">
   <!-- <h1><xsl:value-of select="$TITLE"/></h1>  -->
   <h1>Custom JUnit Report<h1>
    <table width="100%">
    <tr>
        <td align="left"></td>
        <!-- <td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://ant.apache.org/">Ant</a>.</td> -->
        <td align="right">Designed by ninjas!</td>
    </tr>
    </table>
    <hr size="1"/>
</xsl:template>
W
wizardforcel 已提交
128 129 130 131 132 133
```

保存更改并从 eclipse 生成 JUnit 报告。

![Title after customization](img/79f7da90cc8512a6f3a09a33020e5481.png)

W
wizardforcel 已提交
134
## 增加栈跟踪字体大小
W
wizardforcel 已提交
135

W
wizardforcel 已提交
136
我们在发生故障时看到的栈跟踪信息非常小,很难读取。 为了增加其字体大小,只需在模板中添加几行名称为`stylesheet.css`的行即可。
W
wizardforcel 已提交
137 138

```xml
W
wizardforcel 已提交
139 140 141 142
<xsl:template name="stylesheet.css">
.StackTrace {
    font-size: 100%;
}
W
wizardforcel 已提交
143 144
```

W
wizardforcel 已提交
145
然后将该类添加到“`display-failures`”模板的“`code`”标签中,该模板负责显示栈跟踪信息。
W
wizardforcel 已提交
146

W
wizardforcel 已提交
147
#### 之前
W
wizardforcel 已提交
148 149

```xml
W
wizardforcel 已提交
150 151 152 153 154
<code
    <xsl:call-template name="br-replace">
        <xsl:with-param name="word" select="."/>
    </xsl:call-template>
</code>
W
wizardforcel 已提交
155 156 157 158 159 160 161
```

![Stack trace before customization](img/bb8d2d9cffa6c125da7d189e67916d17.png)

#### 之后

```xml
W
wizardforcel 已提交
162 163 164 165 166
<code class="StackTrace">
    <xsl:call-template name="br-replace">
        <xsl:with-param name="word" select="."/>
    </xsl:call-template>
</code>
W
wizardforcel 已提交
167 168 169 170 171 172 173
```

![Stack trace after customization](img/aa339356190129736acc86ac3372a513.png)

现在是时候戴上帽子了。 愿 ANT 的力量与您同在。

在另一篇文章中再见。 自定义愉快!