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.ITestListener 或 org.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 |
workingDir | ant 运行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的其他参数,例如:
< jvmarg value = "-Djava.compiler=NONE" /> |
sysproperty
使用 <sysproperty> 元素来为类指定特殊的系统属性值。这些属性在VM执行测试的时候可以被调用。次元素的属性与环境变量 一样:
< sysproperty key = "basedir" value = "${basedir}" /> |
will run the test and make the basedir
property available to the test.
reporter
内部的 <reporter> 元素可以用来注入自定义的报表监听器,允许用户设置自定义的属性,以便在运行时调整报表器的行为。
这个元素有个 classname 属性,它是必须的,其中指明了自定义监听器的类。为了设置报表器的属性, <reporter> 隐患苏可以包含多个内嵌的 <property> 元素,并且会提供 name 值 value 属性,见下面的例子:
< reporter classname = "com.test.MyReporter" > |
< property name = "methodFilter" value = "*insert*" /> |
< property name = "enableFiltering" value = "true" /> |
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}" |
<xmlfileset dir="${test14.dir}" includes="testng.xml"/> |
Class FileSet
< testng classpathref = "run.cp" |
outputDir = "${testng.report.dir}" |
haltOnFailure = "true" M verbose = "2" > |
< classfileset dir = "${test.build.dir}" includes = "**/*.class" /> |
</
testng
>