读书人

Clover在JUnit中的施用

发布时间: 2012-12-23 11:28:15 作者: rapoo

Clover在JUnit中的使用

下面还是简要的介绍一下Clover在JUnit中的使用(构建工具为Ant):
??? 1.在使用Clover做测试覆盖率分析之前请确保您的代码及测试代码无误。
??? 2.如果采用Ant作为构建工具,则将clover.jar放入Ant的classpath下。也可采用另一种方法,可先将clover.jar及Clover中的另一个jar包cenquatasks.jar放入项目的lib下,采用cenquatasks.jar中的extendclasspath方法将clover.jar扩展到Ant下,在build.xml中加入以下代码:

Clover在JUnit中的施用<taskdef?resource="com/cenqua/ant/antlib.xml"?classpath="lib/cenquatasks.jar"/>
Clover在JUnit中的施用<extendclasspath?path="lib/clover.jar"/>
Clover在JUnit中的施用<taskdef?resource="clovertasks"?classpath="lib/clover.jar"/>??? 3.添加clovertask到Ant中,如下:Clover在JUnit中的施用<taskdef?resource="clovertasks"/>??? 4.在build.xml中加入clover的初始化任务:Clover在JUnit中的施用??<!--?clover.init-->
Clover在JUnit中的施用??<target?name="clover.init">
Clover在JUnit中的施用????<clover-setup?initString="clover_coverage.db"?preserve="true"/>
Clover在JUnit中的施用??</target>注意:步骤3中的代码可放入4中。
??? 5.加入一个或多个运行clover report的任务,最后的结果有多种输出方式:html、pdf、swing、xml等等。
其中,swing方式的代码如下:Clover在JUnit中的施用?<!--?show?the?clover?coverage?result?with?swing?-->
Clover在JUnit中的施用???<target?name="clover.swing"?depends="clover">
Clover在JUnit中的施用????????<clover-view/>
Clover在JUnit中的施用???</target>html方式如下:Clover在JUnit中的施用?<!--?show?the?clover?coverage?result?with?html?file?-->
Clover在JUnit中的施用?<target?name="clover.html"?depends="clover">
Clover在JUnit中的施用????<clover-report>
Clover在JUnit中的施用??????<current?outfile="${target.dir}/clover"?title="Clover?Report">
Clover在JUnit中的施用????????<format?type="html"/>?
Clover在JUnit中的施用??????</current>?????
Clover在JUnit中的施用????</clover-report>
Clover在JUnit中的施用??</target>??? 上面代码中都depends="clover",这里clover任务只是为了简洁而设,代码如下:Clover在JUnit中的施用<!--?runs?the?clover?-->
Clover在JUnit中的施用????<target?name="clover"?depends="clean,clover.init,compile,test"/>??? 通过以上代码的设置即可运行clover.swing 或者clover.html运行Clover查看测试代码的覆盖率。测试结果如下图所示:Clover在JUnit中的施用
???? 其中build.xml中的运行JUnit测试代码的任务如下:Clover在JUnit中的施用?<!--?runs?the?tests?-->
Clover在JUnit中的施用?????<target?name="test">
Clover在JUnit中的施用????????<java?classname="MoneyTest"??fork="yes">
Clover在JUnit中的施用????????????<classpath?refid="build.classpath"/>
Clover在JUnit中的施用????????</java>
Clover在JUnit中的施用?????</target>这是通过java命令运行的,也就是在MoneyTest.java中有main方法:Clover在JUnit中的施用public?static?void?main(String?args[])?{
Clover在JUnit中的施用????????junit.textui.TestRunner.run(MoneyTest.class);
Clover在JUnit中的施用????}还可以直接通过junit命令运行,如下:Clover在JUnit中的施用<target?name="unittest"?depends="clover.init,compile"?description="Test?the?application">
Clover在JUnit中的施用????????<taskdef?resource="clovertasks"/>
Clover在JUnit中的施用????????<echo?message="Testing?the?application?with?junitClover在JUnit中的施用.."/>
Clover在JUnit中的施用????????<junit?haltonfailure="true"?printsummary="true"??fork="true">
Clover在JUnit中的施用????????????????<classpath?refid="build.classpath"/>
Clover在JUnit中的施用????????????????<classpath>
Clover在JUnit中的施用????????????????????????<pathelement?path="${ant.home}/lib/clover.jar"/>
Clover在JUnit中的施用????????????????</classpath>
Clover在JUnit中的施用????????????????<formatter?type="brief"?usefile="false"/>
Clover在JUnit中的施用????<!--????????????<test?name="MoneyTest"/>???-->
Clover在JUnit中的施用????????????????<batchtest>
Clover在JUnit中的施用????????????????????????<fileset?dir="${build}"?includes="**/*Test.class"/>
Clover在JUnit中的施用????????????????</batchtest>
Clover在JUnit中的施用????????</junit>
Clover在JUnit中的施用</target>以上两种test方法都可使用。
??? 在所有任务中,首先要运行clover.init这样就能启动clover,对后面的任务进行监控并adapt一些操作,在随后的compile过程中,clover会记录所编译的java文件的各种数据并存入其db数据库,clover会监控随后运行的UnitTest,计算测试的覆盖率并写入数据库。这里有一点要注意:无论是采用java方式还是junit方式运行test房间,都要在命令中加入属性fork="true",这是因为clover要在JVM shutdown的时候将数据写入数据库,如果没有这个属性,就会出现“no coverage data found for *.db”错误,出现测试覆盖率均为0的结果。

Please ensure Clover has instrumented your source files.
You may need to remove existing .class files for this to occur.

我生成不了库文件:

首先要运行clover.init这样就能启动clover,对后面的任务进行监控并adapt一些操作,在随后的compile过程中,clover会记录所编译的java文件的各种数据并存入其db数据库,clover会监控随后运行的UnitTest,计算测试的覆盖率并写入数据库。 (这里没学好?)

读书人网 >编程

热点推荐