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
>