testNG的执行有2种基本方式:
1、通过指定的XML文件来规定要执行的用例文件和用例【适用于批量】
2、通过命令行参数来指定运行的用例文件和用例【适用于较少的用例文件】
XML模板:【保存为testng.xml】
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Default suite">
<test verbose="2" name="Default test">
<classes>
<class name="JavaSeleniumTestCase110"/> <!-- 针对没有用package管理的测试用例文件 -->
<class name="com.package.Test02"/> <!-- 包.类名的方式调用,针对用package来管理的测试用例文件 -->
</classes>
</test> <!-- Default test -->
<test name="Regression1" preserve-order="false"> <!-- 默认顺序执行为关闭,即非顺序方式执行 -->
<classes>
<class name="com.package.Test1">
<methods>
<include name="m1" /> <!-- 列出指定要执行的方法 -->
<exclude name="m2" /> <!-- 列出指定不执行的方法 -->
</methods>
</class>
</classes>
</test>
<test verbose="3" name="test2">
<groups>
<run>
<exclude name="brokenTests" /> <!-- 列出指定不执行的组 -->
<include name="checkinTests" /> <!-- 列出指定要执行的组 -->
</run>
</groups>
<packages>
<package name="com.sample1" /> <!-- 执行com.sample包下的所有测试用例文件 -->
<package name="com.sample2" />
</packages>
</test>
</suite>
xml的调用命令:【testng.xml可以使用绝对路径】
java org.testng.TestNG testng.xml,testng2.xml, ...
命令行的调用命令:【不带包名和带包名的调用方式】
java org.testng.TestNG -testclass JavaSeleniumTestCase110
java org.testng.TestNG -testclass package.JavaSeleniumTestCase111
什么时候带包名?【不管哪种形式的调用】
只有测试用例文件的代码里使用了包来管理时才使用,直接使用包的全路径即可。如:com.test.testcase
无法找测试用例类文件?
这里要注意执行时,testNG会在classpath中查找测试用例文件,所以需要让测试文件classpath下可以找到即可。
如何设置测试文件到classpath?
如果测试代码中使用了包管理,则把顶层包的父目录添加到classpath即可。
如果测试文件代码没有用到包管理,则直接把测试用例文件的父目录添加到classpath即可;
此外可以通过命令行直接设置classpath:
java -classpath "%classpath%;D:\path\to\your\testfiles" org.testng.TestNG -testclass package.JavaSeleniumTestCase112