TestNG 与 Ant Task

马星阑
2023-12-01

TestNG 与 Ant Task

使用如下方法在ant任务中定义TestNG:

<taskdef resource="testngtasks" classpath="testng.jar"/>
下面的任务运行了TestNG测试,并且总是运行在分支式JVM中。它接受如下属性:
属性说明必需
annotations字符串"JDK"或者"Javadoc",定义了测试中使用哪种注解。如果使用了Javadoc,那么也需要制定"sourcedir".不是。默认是"JDK",如果你使用的是JDK 5的包,反之就是"Javadoc" ,如果你使用了JDK 1.4的包
classfilesetref要运行的测试类所引用的 FileSet 到的结构。 
classpath路径,PATH 类似于要运行的测试。 
classpathref到某个路径下要运行的测试的引用 
dataProviderThreadCount给data provider提供的用来运行测试的线程数量。除非启动并行模式,否则默认为忽略1
delegateCommandSystemProperties把命令行属性传递为系统属性非必需,默认为false
dumpCommand打印出TestNG运行的命令非必需,默认为false
enableAssert启用JDK 1.4的断言非必需,默认为true
failureProperty失败事件中设置的属性名称,只有在haltonfailure 没有设置的时候使用非必需
haltonfailure在测试运行中,如果发生失败则停止构建过程非必需,默认为false 
haltonskipped只要至少发生一处skipped测试,就停止构建过程。非必需,默认为false
groups要运行的组的名字,通过逗号分隔 
excludedgroups要排除的组的名字,通过逗号分隔 
jvm要使用的JVM通过使用Runtime.exec()来调用java
listeners逗号或者空格分隔的全程类名列表,其中的类用作TestNG的监听器(例如 org.testng.ITestListenerorg.testng.IReporter非必需
outputdir测试报表输出目录非必需,默认为test-output.
skippedProperty发生skipped事件时候属性的名字,只有在 haltonskipped 没有设置的时候生效非必需
sourcedir给JDK 1.4 使用的一个像路径一样的测试结构(说白了就是个目录)使用(JavaDoc的那种注解) 
sourcedirref给JDK 1.4使用的到一个像路径已将结构源码包的引用(使用JavaDoc那样的注解) 
suiteRunnerClass完整TestNG启动器的类名

非必需,默认为 org.testng.TestNG

parallel使用并行模式运行测试——可以是methods 或 tests如果没出现就是非必需的。此时不使用并行模式
threadCount并行模式下线程的数量。如果没有使用并行模式,则被忽略1
testJar志向一个包含有tests和suite定义的jar文件的路径 
timeOut以毫秒记的,所有的测试最多可以总计运行的时间 
useDefaultListeners是否使用默认的监听器和报表生成器默认为true
workingDirant 运行TestNG的工作目录 
xmlfilesetref在要运行的suite定义中指向 FileSet 结构的引用。 
suitename如果suite的xml文件或者源码中没有指定,那么可以在这里指定test suite的名字非必需,默认为"Ant suite"
testname如果suite的xml文件或者源码中没有指定,那么可以在这里指定test的名字非必需,默认为"Ant suite"

属性 classpath, classpathref 或者内嵌的 <classpath> 必需提供运行测试的类路径。

属性 xmlfilesetref, classfilesetref 或内嵌的 <xmlfileset>,<classfileset> 必需分别得提供自己使用的类测试

注意: 如果使用JDK 1.4 那么必需使用属性 sourcedir, sourcedirref 或内嵌的<sourcedir>

注意: 使用 <classfileset> 不会自动添加测试类到你的类路径中中,你可能需要重复处理这些类一边骑能够在任务中被正确的使用。

内嵌的元素

classpath

<testng> 任务支持内嵌的 <classpath> 元素,它表示一个路径一样的结构(PATH-like structure)。

bootclasspath

引导类程序的位置,可以通过使用这个类似路径的结构来指定。如果 fork 没有被设置就被忽略。

xmlfileset

suite的定义 (testng.xml) 可以通过使用 FileSet 结构传递给task

classfileset

TestNG 也可以直接运行类,通过使用 FileSet 结构。

sourcedir

路径似的结构,给那些使用JDK 1.4测试中使用Javadoc风格的注解的类使用的

jvmarg

通过内嵌的 <jvmarg> 元素传递给JVM的其他参数,例如:

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

sysproperty

使用 <sysproperty> 元素来为类指定特殊的系统属性值。这些属性在VM执行测试的时候可以被调用。次元素的属性与环境变量 一样:

<testng>
   <sysproperty key="basedir" value="${basedir}"/>
   <!-- ... -->
</testng>

will run the test and make the basedir property available to the test.

reporter

内部的 <reporter> 元素可以用来注入自定义的报表监听器,允许用户设置自定义的属性,以便在运行时调整报表器的行为。
这个元素有个 classname 属性,它是必须的,其中指明了自定义监听器的类。为了设置报表器的属性, <reporter> 隐患苏可以包含多个内嵌的 <property> 元素,并且会提供 namevalue 属性,见下面的例子:

<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> 元素来为在VM中被调用的TestNG传递环境变量。关于 <env> 元素属性的说明,请参看 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 >
 类似资料: