zoukankan      html  css  js  c++  java
  • TestNG官方文档中文版(4)-运行TestNG

    4 - 运行TestNG

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

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

    1) 命令行

    假设你已经将TestNG加入到class path,调用TestNG最简单的方法事下面的:

    1 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>
    

     via:http://www.blogjava.net/aoxj

  • 相关阅读:
    LeetCode 1245. Tree Diameter
    LeetCode 1152. Analyze User Website Visit Pattern
    LeetCode 1223. Dice Roll Simulation
    LeetCode 912. Sort an Array
    LeetCode 993. Cousins in Binary Tree
    LeetCode 1047. Remove All Adjacent Duplicates In String
    LeetCode 390. Elimination Game
    LeetCode 1209. Remove All Adjacent Duplicates in String II
    LeetCode 797. All Paths From Source to Target
    LeetCode 1029. Two City Scheduling
  • 原文地址:https://www.cnblogs.com/liu-ke/p/4223884.html
Copyright © 2011-2022 走看看