Cobertura使用代码覆盖率学习笔记_第1页
Cobertura使用代码覆盖率学习笔记_第2页
Cobertura使用代码覆盖率学习笔记_第3页
Cobertura使用代码覆盖率学习笔记_第4页
Cobertura使用代码覆盖率学习笔记_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、代码覆盖率1.代码覆盖率工具比较用过几款java单体覆盖率工具。稍稍列举一下:Jcoverage优点:1支持ANT TASK2 支持 Eclipse Plugin缺点1商用软件,要money的2貌似以前instrument内存管理的很郁闷,轻松就会 outofmemoryEmma优点:1开源软件2 支持 ANT TASK缺点:ANT TASK的参数指定较弱,coverage参数需要追加配置文件。Cobertura优点:1开源软件2 支持 MARVEN缺点:可定制参数太少从文件的输出上来看,还是以xml,html生成为主。2.Codepro analytiX代码覆盖率安装eclipse插件,在这

2、里不细说了。更新地址:CodePro AnalytiX - http:/dl.google.cOm/eclipse/inst/codepro/latest/3.6可以参考Eclipse常用插件图解汇总.docx文档在菜单选择CodePro>Views>Code Coverage选择统计结果视图I。口6弟可 运行(RSf寸雄质4j ED(W)穗助(H)Cfieat Sh&etcViews*PerspectivesK言View LogClear LogmExplore WorkspacePreferencesAbout怛 Evaluation Ouide HelpWako me

3、每f, & & &9瓶AudHfAudit ExplorerMetricsDependenciesCede Coverage蠢TestCase OutlineSi mils rC ode在项目上点击鼠标右键,CodePro Tools>Instrument for Code Coverage如下图所示,Exercise-KtjiHclIoDcb Jjabrefd k 吧 TTPe I rum l 口 fil 氏 xi 七 i_r 死 jBuild PathlSourceX5CSIRefactorX KTIA Import.,l3 Export.Build Proj

4、ect的 Refreshf$Close ProjectClose Unrelated ProjectsAssign Working Sets.Run Optimized AsRun With CloverAsRun As伊Debug AsValidateCloverTeamACompare With*Rest or* from Local History.CodePro ToolsConfigureienSum 2.z I Audit Code八 Audit Code L1 sing.|J Compute Metrics|驯 Compute Metrics Using,Ju Generate

5、Factory Clashes Generate Test Case?ijj Find Similar Codt国 Find Dead CodeV Check Spelling岷 Repair JavadocF Analyze Dependencies点 Instruirtent fdr Code CeverigeProgrtW聘I & Explore正常运行测试用例,在Code Coverage视图会出现结果Java-Exercise J-MachOperators/src/math/Addlxtended.jivo-EdHpse /Usersuduynguyen/workspa.c

6、e-sv/at脂*3Plug-ir D. 邑妙皆审GH 念曲QTW 圈回 如衍炉import ja/a.uttl.LinkedList;迁 N 伽 J 23、o Finished artfir 0.143 seconds小 £31¥ 洋,今十JAdd.java阐 AddLxenmdJava 口publicRjns: 52/ a Errors Failuri Ifernaifi AdclTpit Runnpf HJ)i。:EittstSum 4EtcstSum 2Eit«5tSum_3 ELjmach.lestAII Runner; jUn t 4 SLinaih.

7、AddExlendedTest Runner faEmath.MvltiplyExterdedTc5t R以red: notcovered、ble sum (L inkedL ist<Double> nj(rbers)( =0;umbers itercrtor(); MextQ) LueD = CDouble>it. nextf);/result 4- valueD.doubleVolue();return result;public static double sum (Yector<Double> nurrbers) double result=0;Writa

8、bleSmart InsertDetdih HistoryClasses:Method!1 / 12 / 3100.0% 66.791Lines:if 1361.5%Blcxks:6/966.7%Inwruciions:22 / 4351 .家coverage details可 GonsoH IKCseraUon Results p Gode Coverage 云 1 Dtad God«= Failure TraceIfil Exercise-3-MathOotrators (51.4?6.由 nuth<51.4*. +2.2X) 21 人ddjgpo.g, 18A&

9、.) 2) Add 7)Ex ce nd edJB| )improvementsince last run使用CodePro AnalytiX.的优点:是Eclipse的集成插件,不需要想 Cobertura建立项目,简 单容易上手,对提高代码测试覆盖率节省了事件。缺点:无法过滤类,在报告中包含了整个测试项目的测试点类。因此生成报告需要借助丁Cobertura 来完成。总结:使用CodePro AnalytiX来辅助编写测试用例,达到质量目标。中创中问件的质量目标是: 行覆盖率90%,分支覆盖率75%。然后,使用Cobertura生成测试用例的报告。3.Cobertura 例子首先仓U建一个

10、Java 项目,项目 名: utmp.code.coverage.test结构如下图所示:J U utmp.eo dst &斯com.amstthew.prarti.eebertura7| Hellojavaj> 谣 test由 com amartheA, p racti s e, c c berturaT HelloTest.java0 MURE jdkl.5.0_16> M弓I用的库j 口 build, m coberturajli b fe junit的 com.5pring&DLJJunit-4.4.-0jar菱 asnn-3r0.jair1

11、3&rn-tree3»Djar.jakdrta-oro -2.0.8.J arQ Jakarta-orodic&n&t,txt。I&g4j-1.2.9.jarj logij-licen&e.txt加obrtursjr国 perties栗buildml接下,创建一个Ant构建配置文件,帮我们实现自动化的编译,单元测试以及cobertura来测量单元测试的代码覆盖情况。Ant的build.xml文件内容如下:增加测试点,在红色1处添加,增加测试用例在红色 2处添加。<?xml version="1.0"

12、encoding="UTF-8” ?><projectname= "cobertura.utmp.code.coverage"default= "coverage" basedir= "." ><!-弓I用perties文件配置路径信息<propertyfile= "perties"/><!- 设置 cobertura 路径-><pathid= "cobertura.classpath"<f

13、ilesetdir="$cobertura.dir"<includename= "cobertura.jar"/><includename= "lib/*/*.jar"/></fileset></path><!- 项目依赖的jar包-><!-path id="project.classpath"><fileset dir="$project.lib.dir"><include name="*.ja

14、r" /></fileset></path-><!- 配置 cobatura ant<taskdefclasspathref=扩展任务->"cobertura.classpath"resource= "perties"/><targetname= ''init"><mkdirdir="$classes.dir"/><mkdirdir="$instrumented.dir"/>

15、;<mkdirdir="$reports.xml.dir"/><mkdirdir="$reports.html.dir"/><mkdirdir="$coverage.xml.dir"/><mkdirdir="$coverage.html.dir"/></target><!-编译源代码-><targetname= ''compile" depends= "init">-><!-

16、创建编译结果目录<javacsrcdir=debug= "true""$src.dir:$testsrc.dir"destdir= "$classes.dir"<!- classpath refid="project.classpath" / -><classpathrefid=</javac>"cobertura.classpath"/></target><targetname= "instrument"depen

17、ds= "init,compile"<!-Remove the coverage data file and any old instrumentation.-<deletefile= "cobertura.ser" /><deletedir="$instrumented.dir"/><!- Instrument the application classes,writing the instrumented classes into $(build.instrumented.dir).->&

18、lt;cobertura-instrumenttodir="$instrumented.dir"><!- The following line causes instrument to ignore any source line containing a reference to log4j,for the purposes of coverage reporting.-><!-排除的类-><ignoreregex= "org.apache.log4j.*”/><filesetdir= "$classes

19、.dir"><!- Instrument all the application classes, but don't instrument the test classes.-><!- 包含的类-><includename= "*/*.class"/><!- 1.添加测试点类,可以参考下面的写法而不需要上面*/*.class -><!- includename="com/cvicse/inforguard/sp/userman/service/impl/UserManImpl.clas

20、s" / -><!- 排除的类-><excludename= "*/*Test.class"/></fileset></cobertura-instrument></target><!-单元测试-><targetname= "test" depends= "init,compile" ><junitfork= "yes" dir= "$basedir" failureProperty= &q

21、uot;test.failed" > <!-Note the classpath order: instrumented classes are before the original (uninstrumented) classes. This is important.-><classpathlocation= "$instrumented.dir"/><classpathlocation= "$classes.dir"/><!The instrumented classes referenc

22、e classes used by the Cobertura runtime, so Cobertura and its dependencies must be on your classpath.-><classpathrefid= "cobertura.classpath"/><!- classpath refid="project.classpath" / ->if= "testcase" /><formattertype= "xml" /><test

23、name= "$(testcase)" todir= "$(reports.xml.dir)'<batchtesttodir="$(reports.xml.dir)"unless="testcase"<filesetdir="$testsrc.dir"<includename="*/*Test.java"/><!- 2.增加测试用例类,可以参考下面的例子写-><!-includename="com/cvicse/inforgu

24、ard/sp/userman/service/impl/UserManImplTest.java" / -></fileset></batchtest>>>/>"$reports.html.dir"/>totallinerate= "100" /></junit><junitreporttodir="$reports.xml.dir"<filesetdir= "$reports.xml.dir"<includenam

25、e= "TEST-*.xml"</fileset><reportformat= "frames" todir=</junitreport></target><targetname= "coverage-check" ><cobertura-checkbranchrate="34"</target><!- 生成coverage xml格式报告 -><targetname= "coverage-report"

26、><!-Generate an XML file containing the coverage data using the "srcdir" attribute.-><cobertura-reportsrcdir="$src.dir" destdir= "$coverage.xml.dir"format= "xml"/></target><!- 生成 coverage html格式报告-><targetname= "alternate-cov

27、erage-report"><!-Generate a series of HTML files containing the coveragedata in a user-readable form using nested source filesets.-><cobertura-reportdestdir="$coverage.html.dir"><filesetdir= "$src.dir" ><includename= "*/*.java"/></file

28、set></cobertura-report></target><!-清除编译生成的结果文件-><targetname="clean" description="Remove all files created by the build/testprocess." ><deletedir="$classes.dir"/><deletedir="$instrumented.dir"/><deletedir="$reports

29、.dir"/><deletefile="cobertura.log"/><deletefile="cobertura.ser"/></target><targetname="coverage" depends="clean,init,compile,instrument,test,coverage-report,alternate-coverage-report”description="Compile, instrument ourself, run th

30、etests and generate JUnit and coverage reports."/></project>perties 文件:#The source code for the examples can be found in this directorysrc.dir= ./srctestsrc.dir= ./test#Test items to be dependent on the path of jar package#project.lib.dir=E:/workspace 7/sp_commonlib#The path t

31、o cobertura.jarcobertura.dir= cobertura#Classes generated by the javac compiler are deposited in this directory#classes.dir=./binclasses.dir= classes#Instrumented classes are deposited into this directoryinstrumented.dir= instrumented#All reports go into this directoryreports.dir= reports#Unit test reports from JUnit are deposited into this direct

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论