ant运行testng
步骤
- 安装ant (brew install ant(对应自己系统的安装方法)) (我的安装在了/usr/local/Cellar下面)
- 工程中添加build.xml文件(构建文件,ant运行时需要)
- 切换到构建文件的目录(需要运行的工程目录下,执行命令 ant
说明:
- 构建文件build.xml一般放在项目的顶层目录中
- 构建文件默认的名称是build.xml。如果取其他名字的话,在运行的时候要把名字传给ant
ant -buildfile *.xml
更多build.xml信息请查看更多
###build.xml例子及解说
<!-- 构建文件定义一个唯一的project,每个project下可以定义多个target,target之间是依赖关系,该target所依赖的target被执行后才可以执行该target。name:项目名 default:默认运行的target,必须有的 basedir:项目的基准目录 -->
<project name="TestNGTest" default="test" basedir=".">
<!-- Define<testng> task -->
<taskdef name="testng" classname="org.testng.TestNGAntTask">
<classpath>
<pathelement location="lib/testng-6.8.7.jar"/>
</classpath>
</taskdef>
<!-- 定义测试源代码的目录路径 -->
<property name="testdir" location="${basedir}/src/test"/>
<property name="srcdir" location="src" />
<!-- 定义库目录路径 -->
<property name="libdir" location="lib" />
<property name="full-compile" value="true" />
<!-- path元素用来表示一个类路径 refid:对当前构建文件中某处定义的一个path的引用 location:表示一个文件或目录,ant在内部将此扩展为一个绝对路径-->
<path id="classpath.base"/>
<path id="classpath.test">
<!-- fileset定义一组文件,dir:表示fileset的基目录 includes:需要包含的文件模式列表 -->
<fileset dir="${libdir}">
<includes name="**/*.jar" />
</fileset>
<pathelement location="${testdir}" />
<pathelement location="${srcdir}" />
<path refid="classpath.base" />
</path>
<!-- target标签,name:目标名称,必须有 depends:依赖的目标 -->
<target name="clean" >
<!-- delete标签,删除一个文件或一组文件。verbose:指定是否列出所删除的文件,默认不列出 -->
<delete verbose="${full-compile}">
<fileset dir="${testdir}" includes="**/*.class" />
</delete>
</target>
<target name="compile" depends="clean">
<!-- javac标签,用于编译一个或一组java文件。srcdir:源程序的目录 destdir:class文件的输出目录 verbose:表示提供详细的输出信息 classpath:所使用的类的路径-->
<javac srcdir="${srcdir}" destdir="${testdir}"
verbose="${full-compile}">
<classpath refid="classpath.test"/>
</javac>
</target>
<target name="test" depends="compile">
<testng outputdir="${testdir}" classpathref="classpath.test">
<xmlfileset dir="${basedir}" includes="testng.xml"/>
</testng>
</target>
</project>
遇到的问题
1.
运行 ant(在testng工程所在目录下运行)
报错:错误: 找不到或无法加载主类 org.apache.tools.ant.launch.Launcher
解决办法:
去下载的ant的目录下找到ant-launcher.jar,将目录放到classpath
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:/usr/local/Cellar/ant/1.9.7/libexec/lib
2.
报错:workspace/testng/build.xml:35: No suites, classes, methods or jar file was specified.
解决办法:
<xmlfileset dir="${basedir}" includes="TestNG1.xml"/>
此段中的testng.xml文件路径配置错误或者文件名错误,找到testng.xml正确的路径或者名称重新配置即可
3.
testng] Error: A JNI error has occurred, please check your installation and try again
[testng] Exception in thread “main” java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException
原因及解决办法:
原因: 却少jcommander.jar
解决: 添加jcommander.jar依赖,然后把jar包复制到工程的lib文件夹下(如果没有放到lib文件夹下也会报错)
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
<version>1.48</version>
</dependency>