单元测试 - 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
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
<正文结束>
相关推荐
当ANT执行测试时,JUnit会运行所有的测试用例,并报告测试结果。 6. **源码分析**:压缩包中的"testAntJunit"文件可能是包含了一个示例项目,这个项目演示了如何在Eclipse中设置ANT脚本和JUnit测试。通过查看源码,...
同时,由于Ant可以与JUnit集成,手册也将教你如何通过Ant来运行JUnit测试,从而实现构建过程中的自动化测试。 Ant与JUnit的结合使用是Java开发中的常见实践,Ant负责项目的构建,而JUnit则确保代码的质量。通过Ant...
**Ant执行JUnit** Apache Ant,一个Java库和命令行工具,其任务是驱动构建过程。它是Java项目的主要构建工具之一,以其灵活性和可扩展性而闻名。JUnit,则是Java编程语言中最广泛使用的单元测试框架,它允许开发...
Ant通过读取这个XML文件并执行其中的指令来自动化整个构建流程。 在提供的文件列表中,“buildjunit.properties”可能是Ant的属性文件。这类文件用于存储构建过程中需要的配置参数,例如类路径、输出目录等。属性...
通过Ant执行`test`目标后,Ant会自动调用JUnit运行测试,并将结果输出到控制台或指定的报告文件中。如果测试失败,Ant会显示错误信息,帮助开发者定位问题。 在实际项目中,我们可能还需要配置测试结果的XML输出,...
Ant是一个构建工具,它允许开发者自动化构建、测试和部署Java项目,而JUnit则是一个单元测试框架,用于编写和运行可重复的测试用例,确保代码质量。这个“ant+junit教程”会深入探讨这两个工具的集成与使用。 首先...
"ant-junit-1.6.5.jar"是Ant对JUnit支持的库文件,它包含了Ant执行JUnit测试所需的类和方法。这个JAR文件让Ant能够调用JUnit,并在构建过程中运行测试。在build.xml文件中,可以配置JUnit任务(<junit>),指定测试...
通过合理配置Ant的build.xml文件,我们可以实现自动化测试,提高开发效率,保证代码质量,从而提升整个项目的稳健性和可靠性。在实际项目中,掌握Ant和JUnit4的结合使用,对于开发者来说是非常重要的技能。
同样,Apache Ant作为一款强大的构建工具,帮助开发者自动化执行各种任务。当这两者结合时,能更有效地进行项目构建和测试。本文将详细探讨“ant-junit-1.7.0.jar.zip”这一组合,以及其中包含的“ant-junit-1.7.0....
当我们谈到“ant-junit-1.6.1.jar.zip”时,实际上是在讨论如何将这两个工具有效地整合在一起,以实现自动化测试。 首先,让我们了解一下Apache Ant。Ant是Apache软件基金会的一个项目,它是一个基于XML的构建工具...
Ant的核心概念是任务(Tasks),它们是Ant执行的具体操作。例如,`javac`任务用于编译Java源代码,`jar`任务用于创建JAR文件。Ant强调可配置性和可扩展性,可以适应各种项目的需求。 2. **JUnit**: JUnit是Java...
本篇文章将详细探讨如何利用Ant和JUnit4来实现自动化的单元测试。 首先,我们需要了解Ant的基本概念。Apache Ant是一个Java库和命令行工具,其任务是驱动构建过程。它的配置文件(通常命名为build.xml)定义了一...
这篇讨论将专注于如何将JUnit集成到Ant构建系统中,以便在Java项目中实现高效的自动化测试。 Ant是一个由Apache软件基金会开发的Java构建工具。它基于XML,允许开发者定义构建过程中的任务,如编译、打包、测试等。...
标题“Ant与JUnit结合”指的是在Java开发中如何利用Apache Ant构建工具与JUnit测试框架进行集成,以便自动化地运行单元测试。Apache Ant是一种基于XML的构建工具,它替代了传统的Makefile,为Java项目提供了构建、...
Apache Ant是一种构建工具,它允许开发者自动化构建、测试和部署Java项目。而JUnit则是Java语言中最常用的单元测试框架,它使得程序员可以方便地编写和运行可重复的测试用例,确保代码的质量。 首先,Apache Ant...
在这个"junit + ant 自动化测试"的demo版本中,我们很可能是看到一个使用`Ant`配置文件(通常是`build.xml`)来调用`JUnit`进行测试的例子。这个`TestJUnit4`可能是一个包含测试类或测试用例的Java源代码文件,利用...
本文将详细介绍如何将JUnit和JaCoCo与Ant构建工具进行集成,以便在项目中实现自动化测试和覆盖率报告。 1. JUnit简介 JUnit是Java编程语言的一个开源测试框架,主要用于编写和运行基于JUnit注解的单元测试。它提供...
首先,Ant是一个基于Java和XML的构建工具,它的主要功能是管理和自动化项目的构建过程。Ant通过一个名为build.xml的XML配置文件来定义一系列的任务,这些任务涵盖了从编译源代码、打包、部署到运行测试等多种操作。...