`
wenhai_zhang
  • 浏览: 181344 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Ant执行Junit实现自动化

阅读更多

单元测试 - JUnit+Ant自动化执行单元测试并生成报告 | How to Automated Unit Testing with JUnit and Ant

【转】:http://aofengblog.blog.163.com/blog/static/6317021201312734058296/

 

 JUnit是Java社区广泛使用的单元测试框架,使单元测试编写和执行变得非常容易,并且几乎所有的流行Java IDE(Eclipse, NetBeans)都集成了它。而JUnit结合Ant可以自动化执行一个项目所有的单元测试并输出单元测试报告。
    下面通过一个完整的脚本样例来说明如何编写Ant脚本执行一个项目的单元测试用例和输出单元测试报告。

一、定义源代码目录和编译输出目录和classpath等变量定义 | Variable Definitions

单元测试-自动化执行单元测试并输出报告 - 傲风 - 宝剑锋从磨砺出 梅花香自苦寒来

1、业务源代码目录(src.java.dir) ,单元测试源代码目录(src.test.dir)。
2、业务源代码编译后输出目录(target.java.dir),单元测试源代码编译后输出目录(target.unit-test.dir),Cobertura打点后的输出目录(target.cover-test.dir)。
3、第三方依赖库目录。
4、单元测试执行报告输出目录(target.unit-test.dir),单元测试覆盖率报告输出目录(target.cover-test-report.dir)。
5、业务源代码编译所需的classpath(app.classpath),单元测试源代码编译所需的classpath(app.test.classpath)。

二、编译业务源代码和单元测试源代码 | Compile Code

单元测试-自动化执行单元测试并输出报告 - 傲风 - 宝剑锋从磨砺出 梅花香自苦寒来

1、编译业务源代码。

2、编译单元测试源代码。

三、执行单元测试用例并生成单元测试报告 | Unit Test And Generate Report

单元测试-自动化执行单元测试并输出报告 - 傲风 - 宝剑锋从磨砺出 梅花香自苦寒来

1、批量执行单元测试,并且以xml格式输出每一个用例的执行结果。
<junit>标签配置属性说明:

  • printsummary - 为每一个测试用例通过System.out输出一行统计信息,如果出错或测试失败则通过System.err输出信息。
  • haltonerror - 执行单元测试出错时停止执行的后续用例。
  • haltonfailure - 执行单元测试失败时停止执行的后续用例。
  • fork - 在独立的VM中执行单元测试用例。

<formatter>标签的配置属性说明:

  •  type - 单元测试用例执行结果输出格式。可选项有:plain, xml, brief 或 failure
  •  usefile - 单元测试用例执行结果是否输出至文件

<batchtest>标签的配置属性说明:

  • todir - 单元测试用例执行结果输出目录。


2、根据每个用例的执行结果文件Test-*.xml输出单元测试报告。
<junitreport>标签配置属性说明:

  • todir - 单元测试报告输出目录。

 

四、执行脚本并查看单元测试报告 | Execute Script And View Report

在命令行中输入: ant unit-test-report ,最终输出的单元测试报告类似如下:

单元测试-自动化执行单元测试并输出报告 - 傲风 - 宝剑锋从磨砺出 梅花香自苦寒来

 

附录:完整的Ant脚本build.xml样例

<?xml version="1.0" encoding="UTF-8" ?>
<project name="busimonitor" basedir=".">
    <property name="src.java.dir" location="${basedir}/app" />
    <property name="src.test.dir" location="${basedir}/test" />
    <property name="target.dir" location="${basedir}/classes" />
    <property name="target.java.dir" location="${target.dir}/java" />
    <property name="target.unit-test.dir" location="${target.dir}/unit-test" />
    <property name="target.cover-test.dir" location="${target.dir}/cover-test" />
    <property name="src.extend.lib.dir" location="${basedir}/lib"/>
    <property name="play.lib.dir" location="/devdata/projects/game/play-1.2.5/framework" />
    <property name="target.report.dir" location="${basedir}/report" />
    <property name="target.unit-test-report.dir" location="${target.report.dir}/unit-test" />
    <property name="target.cover-test-report.dir" location="${target.report.dir}/cover-test" />
    <path id="app.classpath">
        <fileset dir="${play.lib.dir}">
            <include name="**/*.jar" />
        </fileset>
        <fileset dir="${src.extend.lib.dir}">
            <include name="*.jar" />
        </fileset>
        <path location="${target.java.dir}" />
        <path location="${basedir}/conf" />
    </path>
    <path id="app.test.classpath">
        <path location="${target.unit-test.dir}" />
    </path>
    <target name="compile.java">
        <mkdir dir="${target.java.dir}" />
        <javac srcdir="${src.java.dir}" destdir="${target.java.dir}" 
            debug="on" source="1.6" includeantruntime="on">
            <classpath refid="app.classpath"></classpath>
        </javac>
    </target>
    <target name="compile.test" depends="compile.java">
        <mkdir dir="${target.unit-test.dir}" />
        <javac srcdir="${src.test.dir}" destdir="${target.unit-test.dir}" 
            debug="on" source="1.6" includeantruntime="on">
            <classpath refid="app.classpath"></classpath>
            <classpath refid="app.test.classpath"></classpath>
        </javac>
        <copy todir="${target.unit-test.dir}">
            <fileset dir="${src.test.dir}">
                <include name="**/*.properties" />
                <include name="**/*.xml" />
            </fileset>
        </copy>
    </target>
    <target name="compile" depends="compile.java, compile.test"></target>
    <target name="unit-test" depends="compile">
        <mkdir dir="${target.unit-test-report.dir}" />
        <junit printsummary="on" haltonerror="off" 
            haltonfailure="off" fork="on">
            <formatter type="plain" usefile="off"/>
            <formatter type="xml" usefile="on" />
            <batchtest todir="${target.unit-test-report.dir}">
                <fileset dir="${target.unit-test.dir}">
                    <include name="**/*Test.class"/>
                </fileset>
            </batchtest>
            <classpath refid="app.classpath"></classpath>
            <classpath refid="app.test.classpath"></classpath>
        </junit>
    </target>
    <target name="unit-test-report" depends="unit-test">
        <mkdir dir="${target.unit-test-report.dir}/html" />
        <junitreport todir="${target.unit-test-report.dir}">
            <fileset dir="${target.unit-test-report.dir}">
                <include name="TEST-*.xml" />
            </fileset>
            <report todir="${target.unit-test-report.dir}/html" />
        </junitreport>
    </target>
</project>

 

参考资料 | References



<正文结束>

分享到:
评论

相关推荐

    JUnit单元测试自动构建脚本

    基于Ant自动构建JUnit单元测试批量执行测试用例并生成报表。

    让开发自动化:持续测试

    在本文中介绍了几种自动化的开发人员测试,每一次改变源代码都能够运行这些测试。本文提供了Selenium、DbUnit和JUnitPerf测试的例子,即,如果经常运行这些测试可以帮助您尽早发现应用程序的问题。本文涵盖下列内容...

    自动化测试之idea+gradle+JUnit的使用(参数化测试与非参数化测试)

    Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置 ...

    单元测试利器JUnit4

    本文内容包括:引言JUnit4初体验JUnit深入JUnit和Ant总结本文主要介绍了如何使用JUnit4提供的各种功能开展有效的单元测试,并通过一个实例演示了如何使用Ant执行自动化的单元测试。本文假设读者对Eclipse下进行Java...

    xml执行java源码-WeTest:WeTest是处理API接口测试的轻量级自动化测试框架,java语言实现,采用JUnit4开源框架,支持

    WeTest是处理API接口测试的轻量级自动化测试框架,java语言实现,拓展JUnit4开源框架,支持Ant/Maven执行方式。 工具特点: 1.支持suite,根据JUnit4测试类名正则匹配,聚合相同模块的用例,运行单个聚合类即可实现...

    Junit In Action 学习笔记----下载不扣分,回帖加1分,童叟无欺,欢迎下载

    并提及了用Ant,maven和Eclipse来自动化Junit测试。 第二部分:测试策略 第6章:描述了如何用stub来执行单元测试。这一章介绍了一个连接到web服务器的示例应用,并描述了如何应用 Stub方法对远程URL的方法执行...

    JUint实验指导

    主要介绍了如何使用 JUnit 4 提供的各种功能开展有效的单元测试,并通过一个实例演示了如何使用 Ant 执行自动化的单元测试。本文假设读者对 Eclipse 下进行 Java 开发有一定的经验,并了解 Java 5 中的注解...

    Spring in Action(第二版 中文高清版).part2

    2.4.2 混合使用自动和手动装配 2.4.3 何时采用自动装配 2.5 控制Bean创建 2.5.1 Bean范围化 2.5.2 利用工厂方法来创建Bean 2.5.3 初始化和销毁Bean 2.6 小结 第3章 高级Bean装配 3.1 声明父Bean和子Bean ...

    Spring in Action(第二版 中文高清版).part1

    2.4.2 混合使用自动和手动装配 2.4.3 何时采用自动装配 2.5 控制Bean创建 2.5.1 Bean范围化 2.5.2 利用工厂方法来创建Bean 2.5.3 初始化和销毁Bean 2.6 小结 第3章 高级Bean装配 3.1 声明父Bean和子Bean ...

    iuhyiuhkjh908u0980

    仿照Appfuse 提供一个完全自动化的ant构建脚本.在线SHOP的数据库建模图例已经 在博客中贴出.感兴趣的和我一起搭建,嘻嘻 文档博客地址: http://forum.sinomagazine.com 开发环境: Jcreator-4.5 JDK-1.5 Ant-1.6.1 ...

    salesforce-docker-ci

    用于Salesforce的简单docker CI容器可以在CI / CD服务器(例如Jenkins)中使用的简单CI容器,以自动化部署并测试Salesforce。此图像包括NodeJS和SFDX,可用于在Salesforce部署目标上自动执行平凡的任务成分该映像...

    Spring in Action(第2版)中文版

    2.4.2混合使用自动和手动装配 2.4.3何时采用自动装配 2.5控制bean创建 2.5.1bean范围化 2.5.2利用工厂方法来创建bean 2.5.3初始化和销毁bean 2.6小结 第3章高级bean装配 3.1声明父bean和子bean 3.1.1抽象基...

    Eclipse 中文教程

    3.2.2 Ant 执行时期(Ant Runtime) 80 3.3建置次序(Build Order) 82 3.4说明(Help) 83 3.4.1说明服务器(Help Server) 84 3.5自动更新(Install/Update) 85 3.6 Java 86 3.6.1外观(Appearance) 86 3.6.2类别路径变量...

    eclipse 中文版教程

    322 Ant 执行时期(Ant Runtime) 109 33 建置次序(Build Order) 112 34 说明(Help) 113 341 说明服务器(Help Server) 115 35 自动更新(Install/Update) 116 36 Java 117 361 外观(Appearance) 118 362 类别...

    Eclipse从入门到精通.rar

    3.2.2 Ant 执行时期(Ant Runtime) ............. 109 3.3 建置次序(Build Order) 112 3.4 说明(Help)........... 113 3.4.1 说明服务器(Help Server)................ 115 3.5 自动更新(Install/Update)...........

    Eclipse中文教程

    2.7.5 最大化 ............................................................................................................................................ 19 2.8 菜单和工具列 ............................

    Eclipse中文教程.pdf

    1、图文并茂的详细介绍了eclipse的使用方法 2、虽然是pdf,但是非影音版,所有相当清晰 3、含文档结构目录,可以方便的跳转到对应章节 4、允许对文档注释和查找 目录 0.环境说明.....................................

Global site tag (gtag.js) - Google Analytics