关于cobertura的介绍可参考我转载的几篇文章,这里就不做介绍了.这里我想介绍一下cobertura和中间件的结合使用。
我们的项目是一个J2EE的项目,涉及了spring,hibernate,struts,EJB。部署在websphere上,本地的开发环境是IBM RAD。项目组自己开发了一个基于JUnit的测试框架,可以通过JSP调用测试类得出测试结果。美中不足的是该框架得不到代码覆盖率。于是我们决定引入cobertura.
分析cobertura自带的example的bulid.xml我们可以将其分解成几个步骤:
1.编译源代码,该步骤其实IDE已经替我们完成了,不需要通过ant去编译,所以省去.
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="yes">
<classpath refid="cobertura.classpath" />
</javac>
</target>
2.instrument,在这里cobertura生成了instrument后的源代码。并生成cobertura.ser信息文件,该文件很重要,包含了需要被测试的类的信息。
<target name="instrument" depends="init,compile">
<!--
Remove the coverage data file and any old instrumentation.
-->
<delete file="cobertura.ser"/>
<!--<delete dir="${instrumented.dir}" />
-->
<!--
Instrument the application classes, writing the
instrumented classes into ${build.instrumented.dir}.
-->
<cobertura-instrument todir="${instrumented.dir}">
<!--
The following line causes instrument to ignore any
source line containing a reference to log4j, for the
purposes of coverage reporting.
-->
<ignore regex="org.apache.log4j.*" />
<fileset dir="${classes.dir}">
<!--
Instrument all the application classes, but
don't instrument the test classes.
-->
<include name="**/*.class" />
<exclude name="**/*Test.class" />
</fileset>
</cobertura-instrument>
</target>
3.test ,这步是生成详细代码覆盖信息的步骤,并生成JUnit的测试结果。这里需要用instrument后的*.class替代原来的*.class,当instrument后的*.class被执行时,它们会纪录被调用的信息,并写入之前生成的信息文件cobertura.ser。
<target name="test" depends="init,compile">
<junit fork="yes" dir="${basedir}" failureProperty="test.failed">
<!--
Note the classpath order: instrumented classes are before the
original (uninstrumented) classes. This is important.
-->
<classpath location="${instrumented.dir}" />
<classpath location="${classes.dir}" />
<!--
The instrumented classes reference classes used by the
Cobertura runtime, so Cobertura and its dependencies
must be on your classpath.
-->
<classpath refid="cobertura.classpath" />
<formatter type="xml" />
<test name="${testcase}" todir="${reports.xml.dir}" if="testcase" />
<batchtest todir="${reports.xml.dir}" unless="testcase">
<fileset dir="${src.dir}">
<include name="**/*Test.java" />
</fileset>
</batchtest>
</junit>
<junitreport todir="${reports.xml.dir}">
<fileset dir="${reports.xml.dir}">
<include name="TEST-*.xml" />
</fileset>
<report format="frames" todir="${reports.html.dir}" />
</junitreport>
</target>
4.生成代码覆盖率报告。
<target name="coverage-check">
<cobertura-check branchrate="34" totallinerate="100" />
</target>
<target name="coverage-report">
<!--
Generate an XML file containing the coverage data using
the "srcdir" attribute.
-->
<cobertura-report srcdir="${src.dir}" destdir="${coverage.xml.dir}" format="xml" />
</target>
<target name="alternate-coverage-report">
<!--
Generate a series of HTML files containing the coverage
data in a user-readable form using nested source filesets.
-->
<cobertura-report destdir="${coverage.html.dir}">
<fileset dir="${src.dir}">
<include name="**/*.java"/>
</fileset>
</cobertura-report>
</target>
经过分析,这些步骤中只有第三步test部分执行有问题,因为没有websphere的环境,所以我决定将第三步分离,通过项目自带的JUnit框架来调用测试类。首先我执行instrument步骤,然后启动websphere服务器。在这里,正式服务器和RAD自带的websphere有所区别。正式的服务器需要用instrument后的*.class替换原来的,打包后重新发布。测试服务器上我采用先启动,然后替换发布后的*.class。然后我通过测试框架在jsp上执行测试类,此时,所有的信息并没有写入到相应的cobertura.ser文件中,只有当server停止时,系统才会将信息写入文件。因为在测试框架执行instrument后的class时,我们无法指定信息文件的位置,所以会在C:\RAD7\SDP70\runtimes\base_v61\profiles\serverName 文件夹下生成新的cobertura.ser文件,serverName为配置的server名称。然后再利用cobertura自带的merge功能将这两个cobertura.ser文件合并.
5.merge
<target name="merge" description="merge files">
<cobertura-merge>
<fileset dir="${basedir}">
<include name="**/cobertura1.ser"/>
<include name="**/cobertura22.ser"/>
</fileset>
</cobertura-merge>
</target>
最后,我们再通过ant生成相应的代码覆盖率的报告.这样,我们就完成了cobertura和中间件的结合.
PS:各种中间件生成cobertura.ser的位置有所不同.但都可以通过这种方式使用cobertura.
分享到:
相关推荐
在描述中提到的链接指向了ITEYE博客上的一篇文章,虽然具体内容没有给出,但我们可以推测这篇文章可能介绍了如何在Eclipse集成开发环境中使用Ant构建工具来配置和运行Cobertura。Ant是一个基于Java的任务执行工具,...
为了将Cobertura集成到Ant构建过程中,需要在build.xml中添加Cobertura任务。这包括初始化Cobertura数据文件,运行测试并记录覆盖率信息,最后生成覆盖率报告。Cobertura提供的Ant任务如cobertura-instrument用于...
在实际开发过程中,持续集成服务器如Jenkins、Travis CI等也可以与Cobertura结合,自动执行测试覆盖率检查,并将结果展示在构建报告中,方便团队成员随时查看和跟踪。 总的来说,Cobertura作为一款Java代码覆盖率...
4. **执行Cobertura**:在命令行中,使用`cobertura`命令来启动覆盖率分析。这通常会涉及到指定源代码路径、测试结果和覆盖率报告的目标位置。 5. **查看报告**:Cobertura会生成HTML报告,你可以通过浏览器打开...
- **Maven**:在`pom.xml`中添加Cobertura插件配置,使用`mvn cobertura:cobertura`命令生成报告。 - **IntelliJ IDEA**:通过插件(如JaCoCo)集成Cobertura,可以直接在IDE中查看覆盖率。 - **Jenkins**:在...
Cobertura 是一种开源测试工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码以及哪些代码没有执行,来测量测试覆盖率。除了找出未测试到的代码并发现 BUG 外,Cobertura 还可以通过标记无用的、执行...
Cobertura 1.9.1 是一个历史悠久的代码覆盖率工具,主要在Java开发环境中使用。它能够帮助开发者测量和报告程序代码的测试覆盖率,即多少代码被单元测试执行过。这对于确保软件的质量和可靠性至关重要,因为未经过...
本主题将深入探讨Cobertura的使用和它在测试代码中的作用。 【描述】:“Cobertura测试代码” “Cobertura测试代码”通常指的是使用Cobertura工具对Java项目进行代码覆盖率分析的实践过程。这个过程包括安装...
Cobertura 代码覆盖率工具...Cobertura 代码覆盖率工具是一个功能强大且易于使用的工具,能够帮助开发者衡量代码的测试覆盖率。通过使用 Cobertura 工具包,开发者可以生成详细的代码覆盖率报告,从而提高代码的质量。
Cobertura 与 JUnit 结合使用,可以在开发过程中提供实时的代码覆盖率数据,进一步强化 TDD 的实践。 ### 使用 Cobertura 的步骤 1. **安装**:首先,你需要下载 Cobertura 的二进制包(cobertura-1.9.4.1-bin.zip...
标题中的“用 Cobertura 测量测试覆盖率”指的是在软件开发过程中使用 Cobertura 工具来评估代码的测试覆盖率。测试覆盖率是衡量测试质量的重要指标,它表示代码中被测试用例执行到的比例。Cobertura 是一个开源的 ...
在实际使用中,你可以将Cobertura集成到你的构建工具(如Maven或Gradle)中,或者通过命令行直接运行。 集成Cobertura到你的项目中,通常需要以下步骤: 1. **配置构建工具**:如果你使用的是Maven,可以在pom.xml...
1. **修改build.xml文件**:如果使用的是Ant,则需要在build.xml文件中加入Cobertura插件的相关配置。 2. **执行测试**:运行Cobertura提供的测试任务,这将自动收集覆盖率数据并生成报告。 #### 六、解读Cobertura...
在实际项目中,Cobertura可以与持续集成工具(如Jenkins、Hudson或Bamboo)结合,每次构建时自动运行测试并生成覆盖率报告,帮助团队监控代码质量。此外,Cobertura还可以与其他代码质量管理工具(如SonarQube)配合...
在软件开发过程中,代码覆盖率是衡量测试质量的一个重要指标,它可以帮助开发者了解测试的全面性和有效性。Cobertura通过静态分析Java字节码来计算覆盖率,支持JUnit、TestNG等多种测试框架。 首先,让我们深入理解...
cobertura和weblogic整合使用-代码覆盖率测试 里面详细步骤和使用说明,并附加xml文件,不懂的可以QQ我,147806015,
在使用Cobertura-2.1.1时,开发者需要将它集成到构建工具(如Maven、Gradle)中,配置相应的插件和参数。在执行单元测试后,Cobertura会生成覆盖率报告,指出哪些代码需要更多的测试覆盖。这有助于提高代码质量,...
Cobertura可用于分析Java代码的测试覆盖率。Cobertura根据没有被测试覆盖的代码生成基于HTML的报告。...通过监控可测试的代码,Cobertura允许你使用你选择的测试框架,甚至不需要测试框架就可以运行程序。
Cobertura插件与Gradle结合,使得在Gradle构建流程中集成代码覆盖率检查变得简单。 另一方面,“javafx-maven-plugin.zip”则是与JavaFX相关的Maven插件。JavaFX是一个用于创建桌面和富互联网应用程序的Java平台,...