Sky's blog

          我和我追逐的夢(mèng)

          常用鏈接

          統(tǒng)計(jì)

          其他鏈接

          友情鏈接

          最新評(píng)論

          TestNG官方文檔中文版(4)-運(yùn)行TestNG

          4 - 運(yùn)行TestNG

          TestNG可以以不同的方式調(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

          主站蜘蛛池模板: 旬邑县| 武宣县| 林甸县| 寿宁县| 丽水市| 临沭县| 德安县| 郎溪县| 凤翔县| 太仆寺旗| 松原市| 左云县| 贵定县| 稷山县| 罗山县| 综艺| 定南县| 聂拉木县| 灌云县| 方城县| 潮州市| 贵溪市| 肥东县| 绥中县| 葵青区| 惠东县| 会同县| 莱芜市| 隆尧县| 中卫市| 天祝| 泽库县| 岳池县| 沈阳市| 大埔区| 铁力市| 德安县| 黄大仙区| 闽清县| 水城县| 洪泽县|