<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!--suite(測試套件)爲根路徑,僅允許出現1次,是多個test(測試用例)的集合,以下爲各屬性含義及取值
@name 必填,標記suite的名稱
@junit 選填,是否以junit模式運行,可選值(true|false) 默認值"false"
@verbose 選填,命令行信息打印等級(與測報內容無關),可在測試代碼註釋中配置,可選值(1|2|3|4|5)
@parallel 選填,是否多線程併發運行測試,可選值(false | methods | tests | classes | instances),默認 "false"
@thread-count 選填,填寫值爲正整數,當爲併發執行時的線程池數量,默認爲"5"
@configfailurepolicy 一旦Before/After Class/Methods這些方法失敗後,是繼續執行測試還是跳過測試;可選值 (skip | continue),默認"skip
@annotations="javadoc" 獲取註解的位置,如果爲"javadoc", 則使用javadoc註解,否則使用jdk註解
@time-out 爲具體執行單元設定一個超時時間,具體參照parallel的執行單元設置;單位爲毫秒
@skipfailedinvocationcounts 是否跳過失敗的調用,可選值(true | false),默認"false"
@data-provider-thread-count 併發執行時data-provider的線程池數量,默認爲"10"
@object-factory 一個實現IObjectFactory接口的類,用來實例測試對象
@allow-return-values="true" 是否允許返回函數值,可選值(true | false),默認"false"
@preserve-order:順序執行開關,可選值(true | false) "true"
@group-by-instances:是否按實例分組,可選值(true | false) "false"
@guice-stage 支持使用JSR-330的@Inject註解來配置運行時提供的實例
@parent-module 和Guice框架有關,只運行一次,創建一個parent injector給所有guice injectors
-->
<suite name="suitename" junit="false" verbose="3" parallel="false" thread-count="5" configfailurepolicy="skip"
annotations="javadoc" time-out="10000" skipfailedinvocationcounts="true" data-provider-thread-count="5"
object-factory="classname" allow-return-values="true" preserve-order="true" group-by-instances="false">
<!--可以執行多個suite,@path 必填,欲引用的suitefile的絕對路徑-->
<suite-files>
<suite-file path="/path/to/suitefile1"></suite-file>
</suite-files>
<!--全局參數,@name和@value必填,分別爲參數名和參數值-->
<parameter name="par1" value="value1"></parameter>
<parameter name="par2" value="value2"></parameter>
<!--方法選擇器,在suite/test中增加需要額外執行的類(根據父標籤而定),及安排執行優先級-->
<method-selectors>
<method-selector>
<!--
@name 必填
@priority 選填
-->
<selector-class name="classname" priority="1"></selector-class>
<!--
@language 必填
-->
<script language="java"></script>
</method-selector>
</method-selectors>
<!--test定義一次測試執行,以下爲各屬性含義及取值
@name:必填,test的名字,測試報告中會有體現
@junit:選填,是否以Junit模式運行,可選值(true | false),默認"false"
@verbose:選填,命令行信息打印等級,不會影響測試報告輸出內容;可選值(1|2|3|4|5)
@parallel:選填,是否多線程併發運行測試;可選值(false | methods | tests | classes | instances),默認 "false"
@thread-count:選填,當爲併發執行時的線程池數量,默認爲"5"
@annotations:選填,獲取註解的位置,如果爲"javadoc", 則使用javadoc註解,否則使用jdk5註解
@time-out:選填,爲具體執行單元設定一個超時時間,具體參照parallel的執行單元設置;單位爲毫秒
@enabled:選填,設置當前test是否生效,可選值(true | false),默認"true"
@skipfailedinvocationcounts:選填,是否跳過失敗的調用,可選值(true | false),默認"false"
@preserve-order:選填,順序執行開關,可選值(true | false) "true"
@group-by-instances:選填,是否按實例分組,可選值(true | false) "false"
@allow-return-values:選填,是否允許返回函數值,可選值(true | false),默認"false"
-->
<test name="testename" junit="false" verbose="3" parallel="false" thread-count="5" annotations="javadoc"
time-out="10000" enabled="true" skipfailedinvocationcounts="true" preserve-order="true"
allow-return-values="true">
<!--局部參數,@name和@value必填,分別爲參數名和參數值,如果參數名與全局參數一致,則覆蓋全局參數取值-->
<parameter name="par1" value="value1"></parameter>
<parameter name="par2" value="value2"></parameter>
<!--搭配class使用,執行class內指定組-->
<groups>
<!--定義執行組名,在run中使用
@name 必填,組中組的名稱
-->
<define name="xxx">
<!--定義包含的測試組,測試方法屬於哪個測試組在測試代碼註釋中定義。
@name 必填,需要包含進組中組的組名
@description 選填,關於組的描述
@invocation-numbers 選填,執行次序或者執行次數——TODO
-->
<include name="" description="" invocation-numbers=""/>
<include name="" description="" invocation-numbers=""/>
</define>
<!--運行組中組的配置-->
<run>
<!--執行指定的組中組,@name必填,與define name一致-->
<include name=""/>
<!--排除指定的組中組,@name必填,與define name一致-->
<exclude name=""/>
</run>
<!--組中組的依賴配置-->
<dependencies>
<!--配置依賴
@name 必填,需要依賴其他組的組名,define中設置
@depends-on 必填,被依賴的組名,define中設置,可以有多個,用空格隔開
-->
<group name="" depends-on=""></group>
<group name="" depends-on=""></group>
</dependencies>
</groups>
<!--配置要執行的類,是多個class的集合-->
<classes>
<!--局部參數,@name和@value必填,分別爲參數名和參數值,如果參數名與全局參數和父標籤的局部參數一致,則覆蓋全局參數和父標籤的局部參數取值-->
<parameter name="par1" value="value1"></parameter>
<parameter name="par2" value="value2"></parameter>
<!--多個methods的集合,@name 必填,對應class的名稱,如com.example.autotest.testcase-->
<class name="classname">
<!--要執行的方法,如爲空,則執行整個class內包含的全部方法-->
<methods>
<!--局部參數,@name和@value必填,分別爲參數名和參數值,如果參數名與全局參數和父標籤的局部參數一致,則覆蓋全局參數和父標籤的局部參數取值-->
<parameter name="par3" value="value3"></parameter>
<!--類內要執行的測試方法名,在測試代碼註釋中配置,如設置inclde,則只執行該方法,其他跳過
@name 必填,執行方法名
@description 選填,方法描述
@invocation-number 選填,宣發執行順序或執行次數——TODO
-->
<include name="" description="" invocation-numbers=""></include>
<!--除了該方法外,類內其他方法都執行,@name 必填,不執行的方法名-->
<exclude name=""></exclude>
</methods>
<methods></methods>
</class>
</classes>
<!--可以執行指定包下面所有類,是多個package的匯聚-->
<packages>
<!--配置要執行的包,@name 必填,要執行的package名,如com.example.autotest-->
<package name="">
<!--包內要執行的測試方法名,在測試代碼註釋中配置,如設置inclde,則只執行該方法,其他跳過
@name 必填,執行方法名
@description 選填,方法描述
@invocation-number 選填,宣發執行順序或執行次數——TODO
-->
<include name="" description="" invocation-numbers=""></include>
<!--除了該方法外,包內其他方法都執行,name 必填,不執行的方法名-->
<exclude name=""></exclude>
</package>
</packages>
</test>
<!--設置監聽的類名,可設置多個,class-name 必填,類名,如com.example.autotest.Listener-->
<listeners>
<listener class-name="classname1"/>
<listener class-name="classname2"/>
</listeners>
</suite>