TestNG官方文檔中文版(4)-運(yùn)行TestNG
4 - 運(yùn)行TestNGTestNG可以以不同的方式調(diào)用:
* Command line
* ant
* Eclipse
* IntelliJ's IDEA
1) 命令行
假設(shè)你已經(jīng)將TestNG加入到class path,調(diào)用TestNG最簡單的方法事下面的:
java org.testng.TestNG testng1.xml [testng2.xml testng3.xml ...]
必須指定最少一個(gè)描述你試圖測(cè)試的TestNG suite的xml文件。另外,下面的命令行參數(shù)可以使用:
命令行參數(shù)列表
選項(xiàng) 參數(shù) 文檔說明
-d 一個(gè)目錄 生成報(bào)告的目錄( test-output)
-sourcedir 分號(hào)隔開的目錄列表 帶有javadoc注釋的測(cè)試源文件目錄. 這個(gè)選項(xiàng)只在使用javadoc類型的annotation時(shí)才有效.
(例如 "src/test" or "src/test/org/testng/eclipse-plugin;src/test/org/testng/testng").
-testclass 可以在classpath路徑中找到的逗號(hào)分隔的類列表。逗號(hào)分隔的類文件列表(例如 "org.foo.Test1,org.foo.test2").
-groups 逗號(hào)分隔的組列表 要運(yùn)行的組列表(例如 "windows,linux,regression").
-excludegroups 逗號(hào)分隔的組列表 不想包含在這次運(yùn)行中的組列表
-testrunfactory 可以在classpath中找到的java類 指定測(cè)試的runner.這個(gè)類需要實(shí)現(xiàn)接口org.testng.ITestRunnerFactory .
-listener 可以在classpath路徑中找到的逗號(hào)分隔的類列表。 指定測(cè)試的listener. 這個(gè)類需要實(shí)現(xiàn)接口org.testng.ITestListener
-parallel methods|tests 如果指定, 設(shè)置運(yùn)行測(cè)試時(shí)如何使用并發(fā)線程的默認(rèn)機(jī)制.如果不設(shè)置,默認(rèn)機(jī)制是完全不使用并發(fā)線程。這個(gè)設(shè)置可以被suite定義覆蓋.
-threadcount 并發(fā)測(cè)試運(yùn)行時(shí)默認(rèn)使用的線程數(shù) 用于設(shè)置并發(fā)測(cè)試時(shí)默認(rèn)的線程數(shù). 只在并發(fā)模式被選擇時(shí)才生效 (例如, 打開 -parallel 選項(xiàng)). 這個(gè)設(shè)置可以被suite定義覆蓋.
-suitename 測(cè)試套件使用的默認(rèn)名稱. 指定在命令行上定義的測(cè)試套件的名稱。如果suite.xml文件或源代碼指定了另外一個(gè)不同的套件名稱,這個(gè)選項(xiàng)將被忽略。可以創(chuàng)建帶空格的套件名稱,如果在名稱前后加雙引號(hào)如"like this".
-testname 測(cè)試使用的默認(rèn)名稱. 指定在命令行上定義的測(cè)試的名稱。如果suite.xml文件或源代碼指定了另外一個(gè)不同的測(cè)試名稱,這個(gè)選項(xiàng)將被忽略。可以創(chuàng)建帶空格的測(cè)試名稱,如果在名稱前后加雙引號(hào)如"like this".
-reporter 擴(kuò)展配置用于自定義報(bào)告listenner. 類似 -listener 選項(xiàng), 除了容許reporter示例上由javabean形式的配置.
例如: -reporter com.test.MyReporter:methodFilter=*insert*,enableFiltering=true
可以通過不帶任何參數(shù)直接調(diào)用TestNFG來獲得這個(gè)文檔。
可以將命令行開關(guān)寫到txt文件中,例如c:\command.txt, 然后告訴TestNG使用這個(gè)文件類找到參數(shù):
C:> more c:\command.txt
-d test-output testng.xml
C:> java org.testng.TestNG @c:\command.txt
另外,可以通過jvm的命令行來傳遞參數(shù)給TestNG,例如
java -Dtestng.test.classpath="c:/build;c:/java/classes;" org.testng.TestNG testng.xml
TestNG能夠理解的參數(shù)
屬性 類型 文檔
testng.test.classpath 分號(hào)分隔的包含測(cè)試類的一系列目錄 如果這個(gè)屬性被設(shè)置,TestNG將使用它替代從class path來查找測(cè)試類. 如果你正在使用在xml文件里面的包標(biāo)簽并且在classpath路徑中由很多類而大部分都不是測(cè)試類的時(shí)候比較方便
舉例:
java org.testng.TestNG -groups windows,linux -testclass org.test.MyTest
注意 ant 任務(wù)和testng.xml容許用更多的參數(shù)來啟動(dòng)TestNG(包含的方法,指定的參數(shù),等等),因此可以認(rèn)為命令行適用于學(xué)習(xí)TestNG并且想快速入門。
2) Ant
可以這樣定義TestNG的ant任務(wù):
<taskdef resource="testngtasks"
classpath="testng.jar"/>
這個(gè)任務(wù)運(yùn)行TestNG測(cè)試,并且通常是在單獨(dú)的jvm中。接受下面的屬性:
屬性名 描述 是否必須
annotations 字符串"JDK"或者"Javadoc". 定義測(cè)試適用的注釋類型.如果使用"Javadoc", 則需要同時(shí)指定"sourcedir". 不是必須. 如果適用jkd5則默認(rèn)為"JDK",如果適用jdk1.4則默認(rèn)為"Javadoc"
classfilesetref 要運(yùn)行的測(cè)試類的FileSet結(jié)構(gòu)的引用.
classpath 要運(yùn)行的測(cè)試的PATH-like 結(jié)構(gòu).
classpathref 要運(yùn)行的測(cè)試的PATH-like 結(jié)構(gòu)的引用.
dumpCommand 打印TestNG啟動(dòng)命令. 不是必須,默認(rèn)false
enableAssert 開啟JDK 1.4的斷言. 不是必須,默認(rèn)true
failureProperty 失敗發(fā)生時(shí)要設(shè)置的屬性的名稱. 只有haltonfailure沒有設(shè)置時(shí)才有效. 不是必須.
haltonfailure 如果測(cè)試運(yùn)行期間發(fā)生失敗,停止構(gòu)造過程. 不是必須,默認(rèn)false
haltonskipped 如果發(fā)生至少一次測(cè)試跳過,停止構(gòu)造過程. 不是必須,默認(rèn)false
groups 要運(yùn)行的組列表,空格或逗號(hào)分隔
excludedgroups 排除在外的組列表,空格或逗號(hào)分隔
jvm 使用的jvm,將被Runtime.exec()運(yùn)行 java
listeners 逗號(hào)或空格分隔的全路徑類列表,需要實(shí)現(xiàn)org.testng.ITestListener或org.testng.IReporter 不是必須
outputdir 報(bào)告輸出目錄 不是必須,默認(rèn)輸出到test-output.
skippedProperty 當(dāng)發(fā)生測(cè)試被跳過時(shí)設(shè)置的property的名稱.只有當(dāng)haltonskipped沒有設(shè)置時(shí)才使用 不是必須
sourcedir 用于jdk1.4測(cè)試的PATH-like結(jié)構(gòu)(使用JavaDoc形式的annotations)
sourcedirref 用于jdk1.4測(cè)試的PATH-like結(jié)構(gòu)的引用(使用JavaDoc形式的annotations)
suiteRunnerClass TestNG啟動(dòng)器的全路徑名稱 不是必須. 默認(rèn)使用org.testng.TestNG
parallel 運(yùn)行測(cè)試時(shí)使用的并行模式 - methods或者tests 不是必須 - 如果沒有指定,并行模式不被選擇
threadCount 運(yùn)行時(shí)使用的線程數(shù)量。如果并行模式被同時(shí)指定否則忽略。 默認(rèn)1
testJar 包含測(cè)試和套件定義的jar包路徑
timeOut 所有測(cè)試必須運(yùn)行完成的最大超時(shí)時(shí)間,單位毫秒
useDefaultListeners 是否使用默認(rèn)監(jiān)聽器和報(bào)告器. 默認(rèn)true.
workingDir 運(yùn)行TestNG前ant任務(wù)應(yīng)該轉(zhuǎn)移到的目錄。
xmlfilesetref 用于要測(cè)試的套件定義的FileSet結(jié)構(gòu)的引用
suitename 設(shè)置測(cè)試套件的默認(rèn)名稱如果在suite的xml文件或者源代碼中都沒有被定義。 不是必須,默認(rèn)設(shè)置為"Ant suite"
testname 設(shè)置測(cè)試的默認(rèn)名稱如果在suite的xml文件或者源代碼中都沒有被定義。 不是必須,默認(rèn)設(shè)置為"Ant test"
屬性classpath, classpathref或者內(nèi)嵌的<classpath>必須設(shè)置一個(gè),用于提供測(cè)試的classpath
屬性xmlfilesetref, classfilesetref 或者內(nèi)嵌的 <xmlfileset>, 分別的<classfileset>必須使用用來提供測(cè)試
注意:如果使用jdk1.4,屬性attributes sourcedir, sourcedirref 或者內(nèi)嵌的 <sourcedir> 必須提供.
注意:使用<classfileset> 并不自動(dòng)按添加測(cè)試類到classpath: 需要報(bào)告這些在classpath中的任務(wù)要工作的類
內(nèi)嵌元素
classpath
<testng> 任務(wù)支持一個(gè)內(nèi)嵌的<classpath> 元素來提供PATH-like的結(jié)構(gòu).
bootclasspath
bootstrap類文件的位置可以用這個(gè)PATH形式的結(jié)構(gòu)指定-如果fork沒有設(shè)置則被忽略
xmlfileset
套餐定義(testng.xml)可以通過一個(gè)FiltSet結(jié)構(gòu)傳遞給任務(wù)
classfileset
TestNG可以直接在類上運(yùn)行,同樣支持FiltSet結(jié)構(gòu)
sourcedir
PATH形式的結(jié)構(gòu),用于jdk1.4的測(cè)試,使用javadoc annotation
jvmarg
通過內(nèi)嵌的<jvmarg>元素將額外的參數(shù)傳遞給新的虛擬機(jī),例如:
<testng>
<jvmarg value="-Djava.compiler=NONE" />
<!-- ... -->
</testng>
sysproperty
使用內(nèi)嵌的<sysproperty>元素來指定類需要的系統(tǒng)屬性。在測(cè)試的執(zhí)行期間虛擬機(jī)可以獲取這些屬性。 這個(gè)元素的屬性和環(huán)境變量相同。
<testng>
<sysproperty key="basedir" value="${basedir}"/>
<!-- ... -->
</testng>
將運(yùn)行測(cè)試并且使得測(cè)試可以訪問basedir屬性
reporter
內(nèi)部的<reporter>元素是一個(gè)可選的方式,用于注入自定義的報(bào)告監(jiān)聽器,容許用戶為調(diào)整運(yùn)行時(shí)的報(bào)告期行為而
這個(gè)元素強(qiáng)制要求設(shè)置classname屬性,指示自定義監(jiān)聽器的類。為了設(shè)置報(bào)告期屬性,<reporter>元素可以包含多個(gè)內(nèi)嵌的<property>元素來提供name和value屬性,如下所示:
<testng ...>
...
<reporter classname="com.test.MyReporter">
<property name="methodFilter" value="*insert*"/>
<property name="enableFiltering" value="true"/>
</reporter>
...
</testng>
public class MyReporter {
public String getMethodFilter() {...}
public void setMethodFilter(String methodFilter) {...}
public boolean isEnableFiltering() {...}
public void setEnableFiltering(boolean enableFiltering) {...}
...
}
請(qǐng)注意這里僅僅支持有限的屬性類型:String, int, boolean, byte, char, double, float, long, short.
env
可以通過內(nèi)嵌的 <env>元素給TestNG的單獨(dú)的虛擬機(jī)傳遞指定的環(huán)境變量。
要查閱<env> 元素屬性的詳細(xì)描述,請(qǐng)查看ant的exec任務(wù)的描述。
舉例:
Suite xml
<testng classpathref="run.cp"
outputDir="${testng.report.dir}"
sourcedir="${test.src.dir}"
haltOnfailure="true">
<xmlfileset dir="${test14.dir}" includes="testng.xml"/>
</testng>
Class FileSet
<testng classpathref="run.cp"
outputDir="${testng.report.dir}"
haltOnFailure="true"M verbose="2">
<classfileset dir="${test.build.dir}" includes="**/*.class" />
</testng>
posted on 2008-03-22 21:02 sky ao 閱讀(5460) 評(píng)論(0) 編輯 收藏 所屬分類: software test