51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1911|回复: 0
打印 上一主题 下一主题

[讨论] 使用Ant进行Junit测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-8 10:27:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  我们除了使用java来直接运行junit之外,我们还可以使用junit提供的junit task与ant结合来运行。涉及的几个
主要的ant task如下:

l         <junit>,定义一个junit task

l         <batchtest>,位于<junit>中,运行多个TestCase

l         <test>,位于<junit>中,运行单个TestCase

l         <formatter>,位于<junit>中,定义一个测试结果输出格式

l         <junitreport>,定义一个junitreport task

l         <report>,位于<junitreport>中,输出一个junit report

       运行Junit需要jakarta-ant-1.4-optional.jar和Junit.jar包,因为这两个包用于支持ant task--<junit>的,所以不能
在build.xml文件中加载,需要将他们放到ANT_HOME中去.使用eclipse可以按照一下步骤加入:

Windows-Preference-Ant-Runtime-Ant Home Entries

       下面看一个Junit测试的例子:

<?xml version="1.0"?>
<project name="project" default="junit">
         <property name="run.classpath" value="bin"></property>
         <property name="run.srcpath" value="src"></property>
         <property name="test.srcpath" value="test"></property>
         <property name="lib.dir" value="lib"/>   

         <path id="compile.path">
                   <pathelement location="${lib.dir}/junit-3.8.1.jar"/>
                   <pathelement location="${lib.dir}/log4j-1.2.8.jar"/>
         </path>

         <target name="compile">
                   <javac destdir="${run.classpath}" srcdir="${run.srcpath}"
                            classpathref="compile.path"/>
                   <javac destdir="${run.classpath}" srcdir="${test.srcpath}"
                            classpathref="compile.path"/>
         </target>

         <target name="junit" depends="compile">
                   <junit printsummary="true">
                            <classpath path="${run.classpath}"></classpath>
                            <test name="org.ant.test.Test1"></test>
                   </junit>
         </target>
</project>
    可以看出Junit的使用基本和java差不多, printsummary允许输出junit信息,当然Ant提供formatter属性支持多
样化的junit信息输出.Ant包含三种形式的formatter:

brief:以文本格式提供测试失败的详细内容;

plain:以文本格式提供测试失败的详细内容以及每个测试的运行统计;

xml:以xml格式提供扩展的详细内容,包括正在测试时的Ant特性,系统输出,以及每个测试用      例的系统错误.

       使用formatter时建议将printsummary关闭,因为他可能对formatter的生成结果产生影响,并多生成一份同样
的输出.当然我们可以使用formatter将输出结果显示在console中:

<formatter type="brief" usefile="false"/>

Junit支持多个formatter同时存在:

<formatter type="brief" usefile="false"/>

<formatter type="xml"/>

使用xml我们可以得到扩展性更强的信息输出,这时在<test>中要设定todir来指定xml的输出路径.

       在通常情况下我们不可能一个一个来处理junit,所以Ant提供了<batchtest>,可以在他里面嵌套文件集(filese
t)以包含全部的测试用例.

       对于大量的用例,使用控制台输出,或者使用文件或xml文件来作为测试结果都是不合适的,Ant提供了<junitr
eport>任务使用XSLT将xml文件转换为HTML报告.该任务首先将生成的XML文件整合成单一的XML文件,然后再
对他进行转换,这个整合的文件默认情况下被命名为:TESTS-TestSuites.xml.

             <junitreport todir="${test.xml}">
               <fileset dir="${test.xml}">
                 <include name="TEST-*.xml"/>
               </fileset>
               <report format="frames" todir="${test.report}"/>
             </junitreport>
<report>元素指示转换过程中生成有框架(frames)或者无框架的类似与javadoc格式的文件,并保存到todir所在
的目录下面.(由于xalan对于JDK1.4以上的版本存在问题,所以要生成HTML文件需要以下步骤:现在最新的xalan
,在%JAVA_HOME%/jre/lib中建立文件夹endorsed.将xalan中的jar文件copy到里面).

下面看一个完整的例子:


<?xml version="1.0"?>
<projectname="project"default="junit">
    <propertyname="run.classpath"value="bin"></property>
    <propertyname="run.srcpath"value="src"></property>
    <propertyname="test.srcpath"value="test"></property>
    <propertyname="test.xml"value="xml"></property>
    <propertyname="test.report"value="report"></property>
    <propertyname="lib.dir"value="lib"/>

    <pathid="compile.path">
       <pathelementlocation="${lib.dir}/junit-3.8.1.jar"/>
       <pathelementlocation="${lib.dir}/log4j-1.2.8.jar"/>
    </path>

    <targetname="init">
       <deletedir="${test.report}"/>
       <mkdirdir="${test.report}"/>
       <deletedir="${test.xml}"/>
       <mkdirdir="${test.xml}"/>
    </target>

    <targetname="compile"depends="init">
       <javacdestdir="${run.classpath}"srcdir="${run.srcpath}"
           classpathref="compile.path"/>
       <javacdestdir="${run.classpath}"srcdir="${test.srcpath}"
           classpathref="compile.path"/>
    </target>

    <targetname="junit"depends="compile">
       <junitprintsummary="false">
           <classpathpath="${run.classpath}"></classpath>
           <formattertype="xml"/>
           <batchtesttodir="${test.xml}">
              <filesetdir="${run.classpath}">
                  <includename="**/Test*.class"/>
              </fileset>
           </batchtest>
       </junit>

        <junitreporttodir="${test.xml}">
          <filesetdir="${test.xml}">
            <includename="TEST-*.xml"/>
          </fileset>
          <reportformat="frames"todir="${test.report}"/>
        </junitreport>
    </target>
</project>
<?xml version="1.0"?>
<projectname="project"default="junit">
    <propertyname="run.classpath"value="bin"></property>
    <propertyname="run.srcpath"value="src"></property>
    <propertyname="test.srcpath"value="test"></property>
    <propertyname="test.xml"value="xml"></property>
    <propertyname="test.report"value="report"></property>
    <propertyname="lib.dir"value="lib"/>

    <pathid="compile.path">
       <pathelementlocation="${lib.dir}/junit-3.8.1.jar"/>
       <pathelementlocation="${lib.dir}/log4j-1.2.8.jar"/>
    </path>

    <targetname="init">
       <deletedir="${test.report}"/>
       <mkdirdir="${test.report}"/>
       <deletedir="${test.xml}"/>
       <mkdirdir="${test.xml}"/>
    </target>

    <targetname="compile"depends="init">
       <javacdestdir="${run.classpath}"srcdir="${run.srcpath}"
           classpathref="compile.path"/>
       <javacdestdir="${run.classpath}"srcdir="${test.srcpath}"
           classpathref="compile.path"/>
    </target>

    <targetname="junit"depends="compile">
       <junitprintsummary="false">
           <classpathpath="${run.classpath}"></classpath>
           <formattertype="xml"/>
           <batchtesttodir="${test.xml}">
              <filesetdir="${run.classpath}">
                  <includename="**/Test*.class"/>
              </fileset>
           </batchtest>
       </junit>

        <junitreporttodir="${test.xml}">
          <filesetdir="${test.xml}">
            <includename="TEST-*.xml"/>
          </fileset>
          <reportformat="frames"todir="${test.report}"/>
        </junitreport>
    </target>
</project>
生成的文档:






点击Properties超链接会弹出一个窗口显示在测试运行时全部的Ant特性,这对于跟踪由环境和配置造成的失败
是非常便利的!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-25 19:49 , Processed in 0.067562 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表