Sky's blog

          我和我追逐的夢

          常用鏈接

          統計

          其他鏈接

          友情鏈接

          最新評論

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

          4 - 運行TestNG

          TestNG可以以不同的方式調用:

              * Command line
              * ant
              * Eclipse
              * IntelliJ's IDEA

          1) 命令行

          假設你已經將TestNG加入到class path,調用TestNG最簡單的方法事下面的:

          java org.testng.TestNG testng1.xml [testng2.xml testng3.xml ...]

          必須指定最少一個描述你試圖測試的TestNG suite的xml文件。另外,下面的命令行參數可以使用:

          命令行參數列表

          選項        參數                文檔說明
          -d        一個目錄            生成報告的目錄( test-output)
          -sourcedir    分號隔開的目錄列表        帶有javadoc注釋的測試源文件目錄. 這個選項只在使用javadoc類型的annotation時才有效.
                                  (例如 "src/test" or "src/test/org/testng/eclipse-plugin;src/test/org/testng/testng").
          -testclass    可以在classpath路徑中找到的逗號分隔的類列表。逗號分隔的類文件列表(例如 "org.foo.Test1,org.foo.test2").
          -groups        逗號分隔的組列表        要運行的組列表(例如 "windows,linux,regression").
          -excludegroups    逗號分隔的組列表        不想包含在這次運行中的組列表
          -testrunfactory    可以在classpath中找到的java類    指定測試的runner.這個類需要實現接口org.testng.ITestRunnerFactory .
          -listener    可以在classpath路徑中找到的逗號分隔的類列表。    指定測試的listener. 這個類需要實現接口org.testng.ITestListener
          -parallel    methods|tests            如果指定, 設置運行測試時如何使用并發線程的默認機制.如果不設置,默認機制是完全不使用并發線程。這個設置可以被suite定義覆蓋.
          -threadcount    并發測試運行時默認使用的線程數    用于設置并發測試時默認的線程數. 只在并發模式被選擇時才生效 (例如, 打開 -parallel 選項). 這個設置可以被suite定義覆蓋.
          -suitename    測試套件使用的默認名稱.        指定在命令行上定義的測試套件的名稱。如果suite.xml文件或源代碼指定了另外一個不同的套件名稱,這個選項將被忽略。可以創建帶空格的套件名稱,如果在名稱前后加雙引號如"like this".
          -testname    測試使用的默認名稱.        指定在命令行上定義的測試的名稱。如果suite.xml文件或源代碼指定了另外一個不同的測試名稱,這個選項將被忽略。可以創建帶空格的測試名稱,如果在名稱前后加雙引號如"like this".
          -reporter    擴展配置用于自定義報告listenner.    類似 -listener 選項, 除了容許reporter示例上由javabean形式的配置.
              例如: -reporter com.test.MyReporter:methodFilter=*insert*,enableFiltering=true

          可以通過不帶任何參數直接調用TestNFG來獲得這個文檔。

          可以將命令行開關寫到txt文件中,例如c:\command.txt, 然后告訴TestNG使用這個文件類找到參數:

            C:> more c:\command.txt
            -d test-output testng.xml
            C:> java org.testng.TestNG @c:\command.txt

          另外,可以通過jvm的命令行來傳遞參數給TestNG,例如

          java -Dtestng.test.classpath="c:/build;c:/java/classes;" org.testng.TestNG testng.xml

          TestNG能夠理解的參數
          屬性             類型                     文檔
          testng.test.classpath     分號分隔的包含測試類的一系列目錄     如果這個屬性被設置,TestNG將使用它替代從class path來查找測試類. 如果你正在使用在xml文件里面的包標簽并且在classpath路徑中由很多類而大部分都不是測試類的時候比較方便

          舉例:

          java org.testng.TestNG -groups windows,linux -testclass org.test.MyTest

          注意 ant 任務和testng.xml容許用更多的參數來啟動TestNG(包含的方法,指定的參數,等等),因此可以認為命令行適用于學習TestNG并且想快速入門。


          2) Ant

          可以這樣定義TestNG的ant任務:

          <taskdef resource="testngtasks"
                   classpath="testng.jar"/>

          這個任務運行TestNG測試,并且通常是在單獨的jvm中。接受下面的屬性:

          屬性名            描述                是否必須
          annotations         字符串"JDK"或者"Javadoc". 定義測試適用的注釋類型.如果使用"Javadoc", 則需要同時指定"sourcedir".     不是必須. 如果適用jkd5則默認為"JDK",如果適用jdk1.4則默認為"Javadoc"
          classfilesetref     要運行的測試類的FileSet結構的引用.      
          classpath         要運行的測試的PATH-like 結構.      
          classpathref         要運行的測試的PATH-like 結構的引用.      
          dumpCommand         打印TestNG啟動命令.     不是必須,默認false
          enableAssert         開啟JDK 1.4的斷言.     不是必須,默認true
          failureProperty     失敗發生時要設置的屬性的名稱. 只有haltonfailure沒有設置時才有效.     不是必須.
          haltonfailure         如果測試運行期間發生失敗,停止構造過程.     不是必須,默認false
          haltonskipped         如果發生至少一次測試跳過,停止構造過程.        不是必須,默認false
          groups             要運行的組列表,空格或逗號分隔   
          excludedgroups         排除在外的組列表,空格或逗號分隔
          jvm             使用的jvm,將被Runtime.exec()運行     java
          listeners         逗號或空格分隔的全路徑類列表,需要實現org.testng.ITestListener或org.testng.IReporter     不是必須
          outputdir         報告輸出目錄             不是必須,默認輸出到test-output.
          skippedProperty     當發生測試被跳過時設置的property的名稱.只有當haltonskipped沒有設置時才使用     不是必須
          sourcedir         用于jdk1.4測試的PATH-like結構(使用JavaDoc形式的annotations)      
          sourcedirref         用于jdk1.4測試的PATH-like結構的引用(使用JavaDoc形式的annotations)           
          suiteRunnerClass     TestNG啟動器的全路徑名稱    不是必須.  默認使用org.testng.TestNG
          parallel         運行測試時使用的并行模式 - methods或者tests     不是必須 - 如果沒有指定,并行模式不被選擇
          threadCount         運行時使用的線程數量。如果并行模式被同時指定否則忽略。     默認1
          testJar         包含測試和套件定義的jar包路徑
          timeOut         所有測試必須運行完成的最大超時時間,單位毫秒
          useDefaultListeners     是否使用默認監聽器和報告器.     默認true.
          workingDir         運行TestNG前ant任務應該轉移到的目錄。
          xmlfilesetref        用于要測試的套件定義的FileSet結構的引用      
          suitename         設置測試套件的默認名稱如果在suite的xml文件或者源代碼中都沒有被定義。    不是必須,默認設置為"Ant suite"
          testname        設置測試的默認名稱如果在suite的xml文件或者源代碼中都沒有被定義。    不是必須,默認設置為"Ant test"


          屬性classpath, classpathref或者內嵌的<classpath>必須設置一個,用于提供測試的classpath

          屬性xmlfilesetref, classfilesetref 或者內嵌的 <xmlfileset>, 分別的<classfileset>必須使用用來提供測試

          注意:如果使用jdk1.4,屬性attributes sourcedir, sourcedirref 或者內嵌的 <sourcedir> 必須提供.

          注意:使用<classfileset> 并不自動按添加測試類到classpath: 需要報告這些在classpath中的任務要工作的類

          內嵌元素
          classpath
           <testng> 任務支持一個內嵌的<classpath> 元素來提供PATH-like的結構.

          bootclasspath
          bootstrap類文件的位置可以用這個PATH形式的結構指定-如果fork沒有設置則被忽略

          xmlfileset
          套餐定義(testng.xml)可以通過一個FiltSet結構傳遞給任務

          classfileset
          TestNG可以直接在類上運行,同樣支持FiltSet結構

          sourcedir
          PATH形式的結構,用于jdk1.4的測試,使用javadoc annotation

          jvmarg
          通過內嵌的<jvmarg>元素將額外的參數傳遞給新的虛擬機,例如:

          <testng>
             <jvmarg value="-Djava.compiler=NONE" />
             <!-- ... -->
          </testng>

          sysproperty
          使用內嵌的<sysproperty>元素來指定類需要的系統屬性。在測試的執行期間虛擬機可以獲取這些屬性。 這個元素的屬性和環境變量相同。

          <testng>
             <sysproperty key="basedir" value="${basedir}"/>
             <!-- ... -->
          </testng>
          將運行測試并且使得測試可以訪問basedir屬性

          reporter

          內部的<reporter>元素是一個可選的方式,用于注入自定義的報告監聽器,容許用戶為調整運行時的報告期行為而
          這個元素強制要求設置classname屬性,指示自定義監聽器的類。為了設置報告期屬性,<reporter>元素可以包含多個內嵌的<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) {...}
            ...
          }
          請注意這里僅僅支持有限的屬性類型:String, int, boolean, byte, char, double, float, long, short.



          env
          可以通過內嵌的 <env>元素給TestNG的單獨的虛擬機傳遞指定的環境變量。
          要查閱<env> 元素屬性的詳細描述,請查看ant的exec任務的描述。

          舉例:
          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) 評論(0)  編輯  收藏 所屬分類: software test

          主站蜘蛛池模板: 潞城市| 治多县| 北京市| 寿阳县| 黎平县| 互助| 静安区| 小金县| 塔河县| 色达县| 游戏| 甘洛县| 边坝县| 绩溪县| 镇赉县| 衡阳市| 武冈市| 石狮市| 射阳县| 开鲁县| 连山| 景洪市| 宁津县| 洪泽县| 云林县| 钟山县| 宿州市| 塔城市| 昌吉市| 余庆县| 大石桥市| 清河县| 新宁县| 疏附县| 荆州市| 天峻县| 大石桥市| 汉寿县| 古蔺县| 香港| 海兴县|