4 - 运行
TestNG可以使用多种方式调用:
本节将只介绍如何从命令行运行TestNG。如果您对其他方式感兴趣,那么就点击上面的链接查看更多信息。
假设TestNG已经在你的类路径中,最简单的调用方式如下:
java org.testng.TestNG testng1.xml [testng2.xml testng3.xml ...]
你至少要指定一个XML文件,它描述了你要运行的TestNG suite。此外,还有如下命令行参数:
选项 | 参数 | 说明 |
---|---|---|
-d | 目录 | 报告会生成的目录 (默认是test-output). |
-excludegroups | 逗号分隔的组列表 | 要在当前运行中被排除的组列表 |
-groups | 逗号分隔的组列表 | 想要运行的组(e.g. "windows,linux,regression"). |
-listener | 逗号分隔的Java类列表,它们都可以在你的类路径中找到 | 让你指定你自己的监听器。这些类需要实现org.testng.ITestListener |
-parallel | 方法 | 测试 | 如果指定了,那么在运行测试的时候,所使用的默认的机制就会决定如何去使用并行 | 线程。反之则不会。 这是可以在suite定义中被覆盖的 |
-reporter | 自定义报告监听器的扩展配置 | 类似于 -listener 选项,允许在报告器实例中配置JavaBean的样式属性。例如: -reporter com.test.MyReporter:methodFilter=*insert*,enableFiltering=true 这个选项不限次数,根据需要一样一个。 |
-sourcedir | 分号间隔的目录列表 | 使用了JavaDoc类型的annotation的源码所在的目录。这个选项只有你在使用JavaDoc类型的注解时才会有用。(e.g. "src/test" or "src/test/org/testng/eclipse-plugin;src/test/org/testng/testng"). |
-suitename | test suite默认的名字 | 指明了在命令行中定义的test suite的名字。这个选项在suite.xml或源码指定了不同的名字时会被忽略。如果使用双引号括起来,就可在名字中使用空格。例如:"like this"。 |
-testclass | 逗号分隔的类列表,它们必须能在类路径中被找到 | 逗号分隔的测试类的列表 (e.g. "org.foo.Test1,org.foo.test2"). |
-testjar | 一个jar文件 | 指定了一个包含了测试类的Jar文件。如果testng.xml 在jar文件的根目录被找到,就使用之,反之,jar文件中所有的类都会被当成测试类。 |
-testname | 测试所使用的默认名字 | 它为在命令行中定义的测试指定了名字。这个选项在suite.xml或源码指定了不同的名字时会被忽略。如果使用双引号括起来,就可在名字中使用空格。例如:"like this"。 |
-testrunfactory | 可以在类路径中找到的Java类 | 让你指定你自己的测试运行器,相关的类必须实现 org.testng.ITestRunnerFactory. |
-threadcount | 在并行测试的时候默认使用的线程数 | 并行运行中所使用的最大线程数。只在使用并行模式中有效(例如,使用-parallel选项)。它可以在suite定义中被覆盖。 |
上面的参数说明可以通过不带任何参数运行TestNG来获得。
你也可以把命令行开关放到文件中,例如说 c:/command.txt,之后告诉 TestNG 使用这个文件来解析其参数:
C:> more c:/command.txt
-d test-output testng.xml
C:> java org.testng.TestNG @c:/command.txt
此外TestNG也可以在命令行下向其传递JVM参数。例如:
java -Dtestng.test.classpath="c:/build;c:/java/classes;" org.testng.TestNG testng.xml
如下是TestNG所能理解的属性:
属性 | 类型 | 说明 |
---|---|---|
testng.test.classpath | 分号分的一系列目录,其中包含了你的测试类 | 如果指定了这个属性,TestNG就会查找你的测试类而不是类路径。这在你的类路径中有很多类,而大多数又不是测试类,或者在xml文件中使用 package 标记的时候会很方便。 |
例子:
java org.testng.TestNG -groups windows,linux -testclass org.test.MyTest
注意 ant task 和 testng.xml 允许你使用更多的参数来运行TestNG(要包含的方法、指定的参数等等),所以你在学习TestNG的时候考虑使用命令行,因为这样能让你快速进步。