ant运行testng

来源:互联网 发布:各种网络协议的区别 编辑:程序博客网 时间:2024/05/16 12:22

ant运行testng

步骤

  1. 安装ant (brew install ant(对应自己系统的安装方法)) (我的安装在了/usr/local/Cellar下面)
  2. 工程中添加build.xml文件(构建文件,ant运行时需要)
  3. 切换到构建文件的目录(需要运行的工程目录下,执行命令 ant

说明:

  1. 构建文件build.xml一般放在项目的顶层目录中
  2. 构建文件默认的名称是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>
0 0