這是一篇DTD文檔的概述
簡單說明:
測試代碼中在需要測試的方法前加上注釋符,例如:
package com.yiban.test;
public class test2 {
@Parameters({ "first-name" }) //參數 @Test(groups={"g1","g2"}) //組名 public void test001() throws Exception { System.out.println("test001"); }
}
XML文件寫法
<test name="xxxx"> <!-- 參數定義的方法 --> <parameter name="first-name" value="Cedric"/> <!-- groups的用法,前提是需要存在classes的組,否則所有方法不被運行 --> <groups> <!-- 定義組中組的方法 --> <define name="groups_name"> <include name="group1"/> <include name="group2"/> </define> <run> <!-- 此處用組名來區別 --> <inclue name="groups_name" /> <exclue name="groups_name" /> </run> </groups> <!-- classes的用法,classes中包含類名,類名底下可以包含方法名或排除方法名 --> <classes> <class name="class1"> <methods> <!-- 此處用方法名來區別 --> <inclue name="method_name" /> <exclue name="method_name" /> </methods> </class> </classes> </test>
以下詳細XML規則
-結-構-樹
suite
--tests
----parameters
----groups
------definitions
------runs
----classes
--parameters
**suite元素
suite 是testng.xml文檔中最上層的元素
< suite (groups?,(listeners|packages|test|parameter|method-selectors|suite-files)*) >
屬性: 參數列表(“”中是默認值,CDATA代表字符串)
name | suite的名字(他會出現在測試報告中) |
junit | 是否以junit模式運行 |
verbose | 在控制台中如何輸出,這個設置不影響html版本的測試報告 |
parallel | 是否使用多線程測試(可能加速測試) |
configfailurepolicy | 是否在運行失敗了一次后繼續嘗試或跳過 |
thread-count | 如果設置了parallel,可以設置線程數 |
annotations | 有‘javadoc’的時候尋找,沒有的話使用jdk5的注釋 |
time-out | 在終止method (如果parallel="methods") 或者test (如果parallel="tests")之前設置以毫秒為單位的等待時間 |
skipfailedinvocationcounts | 是否跳過失敗的調用 |
data-provider-thread-count | 提供一個整數線程池的范圍為了使用parallel data |
object-factory | 一個繼承IObjectFactory的類,被用來實例化測試對象 |
allow-return-values | 如果設置true,將會運行測試用例並返回值 |
< suite name CDATA #必填項 junit (true | false) "false" verbose CDATA #隱含 parallel (false | methods | tests | classes | instances) "false" configfailurepolicy (skip | continue) "skip" thread-count CDATA "5" annotations CDATA #隱含 time-out CDATA #隱含 skipfailedinvocationcounts (true | false) "false" data-provider-thread-count CDATA "10" object-factory CDATA #隱含 group-by-instances (true | false) "false" preserve-order (true | false) "true" allow-return-values (true | false) "false" >
**suite-files元素
一個XML文檔的列表包含更多的suite描述
< suite-files (suite-file)* > < suite-file ANY >
參數列表
< suite-file path CDATA #必填項 >
**Parameters元素
Parameters 可以在suite或者test級別被定義.
Parameters 定義在test級別時將覆蓋sutie級別的同名參數
Parameters 被用來聯系java方法參數的實際值,並在這里定義.
< parameter ANY>
參數列表
< parameter name CDATA #必填項 value CDATA #必填項 >
**method-selectors元素
方法選擇器定義了那些方法要運行,他們必須繼承org.testng.IMethodSelector
< method-selectors (method-selector*) > < method-selector ((selector-class)*|script) > < selector-class ANY>
參數列表:
< selector-class name CDATA #必填項 priority CDATA #隱含 >
**script元素
< script ANY>
參數列表:
< script language CDATA #必填項 >
**test元素
一個test包含參數和classes,另外,你可以定義組(組中組)
< test (method-selectors?,parameter*,groups?,packages?,classes?) >
屬性:
name | test的名字(他會出現在測試報告中) |
junit | 是否以junit模式運行 |
verbose | 在控制台中如何輸出,這個設置不影響html版本的測試報告,默認值: suite 級別的verbose |
parallel | 是否使用多線程測試(可能加速測試) |
thread-count | 如果設置了parallel,可以設置線程數 |
annotations | 有‘javadoc’的時候尋找,沒有的話使用jdk5的注釋 |
time-out | 在終止method (如果parallel="methods") 或者test (如果parallel="tests")之前設置以毫秒為單位的等待時間 |
enabled | 設置是否運行當前test,默認值:true |
skipfailedinvocationcounts | 是否跳過錯誤的調用 |
prserve-order | 如果設置true,classes會按照XML文檔中的順序執行 |
allow-return-values | 如果設置true,將會運行測試用例並返回值 |
屬性列表:
< test name CDATA #必填項 junit (true | false) "false" verbose CDATA #隱含 parallel CDATA #隱含 thread-count CDATA #隱含 annotations CDATA #隱含 time-out CDATA #隱含 enabled CDATA #隱含 skipfailedinvocationcounts (true | false) "false" preserve-order (true | false) "true" group-by-instances (true | false) "false" allow-return-values (true | false) "false" >
**groups元素
定義包含在測試中要運行的組(組中組)
< groups (define*,run?,dependencies?) >
**define元素
< define (include*)>
屬性列表
< define name CDATA #必填項 >
**include元素
定義組中組
<include ANY>
屬性列表
< include name CDATA #必填項 description CDATA #隱含 invocation-numbers CDATA #隱含>
**exclude元素
定義排除的組
< exclude ANY>
屬性列表
< exclude name CDATA #必填項 >
**run元素
定義那些group需要被運行
< run (include?,exclude?)* >
**dependencies元素
< dependencies (group*)>
**group元素
< group ANY>
屬性列表
< group name CDATA #必填項 depends-on CDATA #必填項 >
**classes元素
包含在此次test中的classes列表
< classes (class*) >
**class元素
< class (methods*) >
屬性列表:
< class name CDATA #必填項 >
**packages元素
包含在此次test中的packages列表
< packages (package*) >
**package元素
如果package名字結尾包含.* ,則所有的子包也被包括其中
< package (include?,exclude?)*>
屬性列表:
< package name CDATA #必填項 >
**methods元素
包含或排除在此次test中的methods列表
< methods (include?,exclude?,parameter?)* >
**listeners元素
將被傳給TestNG的監聽列表
< listeners (listener*) >
**listener元素
< listener ANY>
屬性列表:
<listener class-name CDATA #必填項 >