1. 下载ant工具包 (http://www.fayea.com/apache-mirror//ant/binaries/apache-ant-1.9.0-bin.zip)
2. 配置ant环境变量(ant存放路径)
ANT_HOME::C:\Program Files\Java\apache-ant-1.9.0
PATH:%ANT_HOME%/bin
3. 查看是否安装成功:在dos窗口中输入命令ant,若出现结果
Buildfile: build.xml does not exist!
Build failed
说明ant安装成功,因为ant默认运行build.xml,这个需要我们自己建立。
4. 在项目中新建build.xml文件
<project basedir="." default="default" name="automation test"> <!--工程根目录--> <property name="base.dir" value="." /> <!--测试结果输出路径--> <property name="testng.output.dir" value="${base.dir}/test-output" /> <!--工程引用包--> <property name="lib.dir" value="${base.dir}/lib" /> <!--class文件存放位置--> <property name="classes.dir" value="classes" /> <property name="src.dir" value="src" /> <property name="run.test.classes.dir" value="${base.dir}/bin/com/zzt/test" /> <property name="testng.threadcount" value="1"/> <!--清除--> <target name="clean"> <delete dir="${base.dir}/bin" /> </target> <!--编译工程所需的jar包--> <path id="classes"> <fileset dir="${lib.dir}" includes="*jar" /> <fileset dir="${lib.dir}" includes="*zip" /> <pathelement location="${base.dir}/bin" /> </path> <!--copy项目所需要的xml及properties文件--> <target name="compile" depends="clean"> <mkdir dir="${base.dir}/bin" /> <javac srcdir="${base.dir}/src" destdir="${base.dir}/bin" classpathref="classes" includeantruntime="off" debug="on" debuglevel="lines,vars,source" /> <!--将配置文件拷贝到bin目录下--> <copy todir="${base.dir}/bin"> <fileset dir="${src.dir}"> <include name="**/*.xml" /> <include name="**/*.properties" /> </fileset> <fileset dir="${base.dir}"> <include name="**/*.xml" /> <include name="**/*.properties" /> </fileset> </copy> </target> <!--此处很重要,如果你要运行的case是testNG,必须配置--> <taskdef resource="testngtasks" classpath="${lib.dir}/testng-6.2.jar" /> <!--调用的TestNG用例执行xml文件,这里是文件名--> <property name="testng.file" value="testNG.xml" /> <!--默认情况下的缺省任务--> <target name="default" depends="compile"> <testng outputdir="${testng.output.dir}" classpathref="classes" delegateCommandSystemProperties="true"> <xmlfileset dir="${base.dir}" includes="${testng.file}" /> </testng> </target> <!--根据命令行传参,运行指定的case,eg. ant test-single -Dtest.class=TestNG--> <target name="test-single" description="Compile tests and Run a single test specified by -Dtest.class" depends="compile"> <condition property="test.class" value="${env.TEST_CLASS}"> <isset property="env.TEST_CLASS"/> </condition> <condition property="run.test" value="**/${test.class}.class"> <isset property="test.class"/> </condition> <testng outputdir="${testng.output.dir}" classpathref="classes" delegateCommandSystemProperties="true"> <classfileset dir="${base.dir}" includes="${run.test}" /> </testng> </target> <!--多线程,eg. ant test-all -Dtestng.threadcount=4--> <target name="test-all" description="run all tests with multi-thread" depends="compile"> <testng classpathref="classes" suiteThreadPoolSize="${testng.threadcount}" parallel="classes" threadCount="${testng.threadcount}"> <classfileset dir="${base.dir}" includes="**/*Tests.class" /> </testng> </target> </project>
对应testNG.xml:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Suite" parallel="false"> <test name="Test" preserve-order="true"> <!-- 分组测试,这里只是对TestNG中的属于组Test1的方法进行测试 --> <!-- <groups> --> <!-- <run> --> <!-- <include name="Test2"></include> --> <!-- </run> --> <!-- </groups> --> <classes> <!-- <class name="com.zzt.test.AntTestNG1Tests" /> --> <class name="com.zzt.test.AntTestNG2Tests" /> </classes> <!-- 对指定的方法进行测试 --> <!-- <classes> --> <!-- <class name="com.zzt.test.AntTestNGTest"> --> <!-- <methods> --> <!-- <include name="testMethod1"></include> --> <!-- </methods> --> <!-- </class> --> <!-- </classes> --> </test> </suite>
附件Ant_TestNG_Test.zip为该项目源码(含 testng-6.2.jar)