Ant与Junit任务整合

一、Junit任务的属性及功能

1. Printsummary属性

用于指定是否每个测试用例测试测试完成时都输出一行统计信息。可取值on,off(默认),和withOutAndErr。

  • off:代表不输出,是默认选项。
  • on:代表每个测试用例打印一行统计信息。
  • withOutAndErr:相当于on但可以同时指定输出方式,可选择System.out或System.err。

2. Fork属性

用于指定一个特定的JVM,然后使用这个指定的JVM执行JUnit测试。默认为off,即不指定而是使用当前的JVM。

3. ForkMode属性

在指定了fork属性的前提下使用,用于指定开启JVM的方式。可取值perTest(默认),once和perBath。

  • once:所有测试用例只开启一个JVM。
  • perTest:每一个测试用例开启一个JVM。
  • perBatch:为每一个<batchtest>元素开启一个JVM。

4. Haltonerror属性

用于指定当前出现错误时是否停止整个构建过程。可取值on和off,默认为off不停止。

5. Failureproperty属性

用于指定一个property元素,当出现错误时会报错误代码写到这个指定的属性中。

6. Failtertrace属性

用于从错误堆栈中过滤出Ant和Junit的错误信息,默认为on开启。

7. Timeout属性

用于指定一个时间(时间的单位为毫秒),如果在这段时间内构件没有完成,将会停止所有的构建工作。默认时不指定。

8. Maxmemory属性

用于指定分配多少内存给fork指定的JVM。如果fork属性没有指定,则这个属性不能使用。

9. Jvm属性

用于指定调用JVM时所执行的命令,默认为Java命令。这个指定的命令由java.lang.Runtime.exec()进行解释。只有fork属性被指定时才能使用。

10. Dir属性

用于指定调用JVM的目录,这个属性要在指定了fork属性后才能使用。

11. Newenvironment属性

用于指定当使用了新的环境变量后,旧的环境变量是否还能继续传递使用。默认为false,代表不能继续使用。只有fork属性被指定时才能使用这个属性。

12. Includeantruntime属性

用于指定把Ant类库和运行的JUnit的类库放到classpath中。默认为true。

13. Showoutput属性

用于指定把执行JUnit测试时输出的信息转到Ant的日志系统中,在日志输出的过程中可以使用formatter进行格式化。

14. Tempdir属性

用于指定一个存放临时文件的地方。

15. Reloading属性

用于指定是否为每个JUnit测试重新初始化一个classLoader(类加载器)。默认为true。

二、嵌套使用Ant类型

2.1 classpath类型

用于指定类库。例如:

<junit fork="no">
...
<classpath>
	<pathelement location="lib/junit.jar"/>
</classpath>
...	
</junit>

2.2 propertyset类型

可以同时引用多个系统属性。例如:

<junit fork="no">
...
<propertyset id="properties-starting-with-foo">
	<propertyref prefix="foo"/>	
</propertyset>
...	
</junit>

2.3 assertions类型

assertions类型用于指定某个包内或某个具体的类能不能使用断言,这个类型只有class和packages这两个属性,用于指定具体的类的位置和包路径。

<junit fork="no">
...
<assertions enableSystemAssertions="true">
	<enable package="org.apache"/>
	<disable package="org.apache.tools.ant"/>
	<enable class="org.apache.tools.ant.Main"/>	
</assertions>
...	
</junit>

2.4 formatter类型

用于格式化测试输出的结果。

  • Type属性:用于指定一个预定义的格式化类型,例如xml、plain或brief。
  • Classname属性:用于指定具体的格式化类的位置。Classname和Type属性必须指定其一。
  • Extension属性:当通过Classname指定格式类时,可以使用这个属性来指定输出文件的位置。
  • Usefile属性:用于指定是否使用输出文件,取值为true或false。默认为true。
  • If属性:用于指定只有设定了名称属性才进行格式化。默认为true。
  • Unless属性:与If属性相反,只有在没有设定名称属性时才进行格式化。

使用plain简单文本格式进行格式化:

<junit printsummary="yes" fork="yes" haltonfailure="yes">
...
<formatter type="plain"/>
...	
</junit>

2.5 test类型

test类型用于指定对一个具体的测试用例进行测试。

  • Name属性:用于指定要测试的用例的名称,需要指定全路径。
  • Fork属性:用于指定运行的JVM,用于覆盖JUnit任务中的Fork属性设定。
  • Haltonerror属性:用于指定当出错时是否停止构件,可用于覆盖JUnit任务中的设定。
  • Errorproperty属性:用于指定一个记录错误代码的属性元素,可用于覆盖JUnit任务中的相关设定。
  • Haltonfilure属性:用于指定当测试失败时,停止整个构建过程。可用于覆盖JUnit任务中的相关设定。
  • Failureproperty属性:用于指定一个属性元素,当测试失败时用于记录失败的代码输出。可用于覆盖Junit任务中的相关设定。
  • Filtertrace属性:指定一个过滤器,在错误或失败时过滤出Ant和JUnit的错误堆栈。可用于覆盖JUnit任务中的相关设定。
  • Todir属性:指定输出测试报告的位置(目录)。
  • Outfile属性:用于设定输出文件的名称。
  • If属性:用于指定当名称属性被设定时才执行测试。
  • Unless属性:与If属性相反,只有在未设定名称属性时才进行测试。

在test类型中可以嵌套formatter类型,用于定义测试结果的输出格式,test类型的通常使用方式如下:

<junit printsummary="yes" fork="yes" haltonfailure="yes">
	<formatter type="plain"/>
	<test name="org.antbook.TestCase"/>
</junit>

2.6 batchtest类型

用于定义一组测试,具有与test类型类似的属性。

在batchtest类型中可以使用FileSet类型指定需要包含的测试用例的集合,同时也可以指定formatter类型。示例:

<junit printsummary="yes" fork="yes" haltonfailure="yes">
	<formatter type="plain"/>
	<batchtest fork="yes" todir="${reports.tests}">
		<fileset dir="${src.tests}">
			<include name="**/*Test*.java"/>
			<exclude name="**/AllTests.java"/>	
		</fileset>	
	</batchtest>
</junit>

三、JUnitReport任务的属性及功能

JUnitReport任务用于整合JUnit测试生成的测试结果,从而生成测试报表。

JUnitReport任务具有以下属性可供设定:

  • Tofile属性:用于指定一个xml文件的名称,这个文件将整合JUnit测试生成的xml结果文件。默认名称为TESTS-TestSuites.xml。
  • Todir属性:用于指定存放生成的报表文件的位置,默认为当前目录。

  在JUnitReport任务中可以嵌套FilSet类型,用于指定测试结果文件(xml文件);也可以嵌套report类型,report类型可以根据JUnitReport生成的测试报告,生成一个可以浏览的报告文件(html文件)。

  • format属性:指定生成可浏览的html报表的格式,可取值noframes和frames(html中的框架),默认为frames。
  • Styledir属性:用于指定xsl文件的位置。有两种形式,即frames格式与noframes格式;当为frames格式时xsl文件的名称必须为junit-frames.xsl;当为noframes格式时xsl文件的名称必须为junit-noframes.xsl。
  • Todir属性:用于指定生成的可浏览报表文件的位置。

JunitReport任务通常的使用方式如下:

<junitreport todir="./reports">
	<fileset dir="./reports">
		<include name="TEST-*.xml"/>	
	</fileset>	
	<report format="frames" todir="./reprot/html"/>
</junitreport>

四、Ant与Junit的集成使用实例

  示例将实现通过Ant工具自动对JUnit3LibraryTest.java和JUnit4LibraryTest.java这两个测试用例进行测试,同时生成结果的xml文件和html的报表。

示例源代码的地址:http://download.csdn.net/detail/fanxiaobin577328725/9711347

构件文件(build.xml):

<?xml version="1.0" encoding="UTF-8"?>
<project name="JUnitTest" default="init">
	<property name="junitJar" value="lib/junit-4.1.jar"/>
	<target name="init">
		<mkdir dir="report"/>
		<mkdir dir="htmlreport"/>
	</target>
	<target name="compile" >
		<javac destdir="src" srcdir="src" includeantruntime="on">
			<classpath>
				<pathelement location="${junitJar}"/>
			</classpath>
		</javac>
	</target>
	<target name="run" depends="compile">
		<echo message="start run junit test" />
		<junit>
			<classpath>
				<pathelement location="src"/>
				<pathelement location="${junitJar}"/>
			</classpath>
			<formatter type="xml"/>
			<batchtest haltonfailure="no"  todir="report">
				<fileset dir="src">
					<include name="**/*Test.java"/>
				</fileset>
			</batchtest>
		</junit>
		<junitreport todir="./htmlreport">
			 <fileset dir="./report">
			   <include name="TEST-*.xml"/>
			  </fileset>
			<report format="noframes" todir="./htmlreport"/>
		</junitreport>
		<echo message="end running junit test" />
	</target>
</project>

  这里build.xml文件将生成.xml文件格式的结果。进入build.xml构件文件所在的目录,执行ant init run命令,在我的电脑上运行如图:

C:\Users\fxb\Desktop\ceshi>ant init run
Buildfile: C:\Users\fxb\Desktop\ceshi\build.xml

init:
    [mkdir] Created dir: C:\Users\fxb\Desktop\ceshi\report
    [mkdir] Created dir: C:\Users\fxb\Desktop\ceshi\htmlreport

compile:
    [javac] Compiling 6 source files to C:\Users\fxb\Desktop\ceshi\src

run:
     [echo] start run junit test
[junitreport] Processing C:\Users\fxb\Desktop\ceshi\htmlreport\TESTS-TestSuites.
xml to C:\Users\fxb\Desktop\ceshi\htmlreport\junit-noframes.html
[junitreport] Loading stylesheet jar:file:/E:/Develop%20Software/Apache/ant197/l
ib/ant-junit.jar!/org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-noframe
s.xsl
[junitreport] Transform time: 716ms
     [echo] end running junit test

BUILD SUCCESSFUL
Total time: 2 seconds

  在执行构建命令后,在当前目录会生成report和htmlreport两个目录。在report目录下有两个测试结果的xml文件,TEST-junit.test.JUnit3LibraryTest.xml和TEST-junit.test.JUnit4LibraryTest.xml。这两个文件详细地列出了测试结果。在htmlreport目录下也有两个文件,一个是TESTS-TestSuites.xml文件,这个文件整合了report目录下的所有测试结果:另一个是junit-noframes.html文件,这个文件时html格式的报表。通过junit-noframes.html报表可以查看所有测试结果,报表内容如图所示:

赞赏

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页