`

cobertura 在websphere中的使用

阅读更多
   关于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.
分享到:
评论

相关推荐

    cobertura

    在描述中提到的链接指向了ITEYE博客上的一篇文章,虽然具体内容没有给出,但我们可以推测这篇文章可能介绍了如何在Eclipse集成开发环境中使用Ant构建工具来配置和运行Cobertura。Ant是一个基于Java的任务执行工具,...

    Junit+ant+cobertura示例

    为了将Cobertura集成到Ant构建过程中,需要在build.xml中添加Cobertura任务。这包括初始化Cobertura数据文件,运行测试并记录覆盖率信息,最后生成覆盖率报告。Cobertura提供的Ant任务如cobertura-instrument用于...

    Cobertura代码覆盖测试工具:cobertura-2.1.1

    在实际开发过程中,持续集成服务器如Jenkins、Travis CI等也可以与Cobertura结合,自动执行测试覆盖率检查,并将结果展示在构建报告中,方便团队成员随时查看和跟踪。 总的来说,Cobertura作为一款Java代码覆盖率...

    cobertura-2.1.1测试案例覆盖率统计工具

    4. **执行Cobertura**:在命令行中,使用`cobertura`命令来启动覆盖率分析。这通常会涉及到指定源代码路径、测试结果和覆盖率报告的目标位置。 5. **查看报告**:Cobertura会生成HTML报告,你可以通过浏览器打开...

    使用Cobertura统计单元测试覆盖率

    - **Maven**:在`pom.xml`中添加Cobertura插件配置,使用`mvn cobertura:cobertura`命令生成报告。 - **IntelliJ IDEA**:通过插件(如JaCoCo)集成Cobertura,可以直接在IDE中查看覆盖率。 - **Jenkins**:在...

    Cobertura代码覆盖率测试工具介绍

    Cobertura 是一种开源测试工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码以及哪些代码没有执行,来测量测试覆盖率。除了找出未测试到的代码并发现 BUG 外,Cobertura 还可以通过标记无用的、执行...

    cobertura1.9.1

    Cobertura 1.9.1 是一个历史悠久的代码覆盖率工具,主要在Java开发环境中使用。它能够帮助开发者测量和报告程序代码的测试覆盖率,即多少代码被单元测试执行过。这对于确保软件的质量和可靠性至关重要,因为未经过...

    cobertura测试代码

    本主题将深入探讨Cobertura的使用和它在测试代码中的作用。 【描述】:“Cobertura测试代码” “Cobertura测试代码”通常指的是使用Cobertura工具对Java项目进行代码覆盖率分析的实践过程。这个过程包括安装...

    cobertura代码覆盖率工具

    Cobertura 代码覆盖率工具...Cobertura 代码覆盖率工具是一个功能强大且易于使用的工具,能够帮助开发者衡量代码的测试覆盖率。通过使用 Cobertura 工具包,开发者可以生成详细的代码覆盖率报告,从而提高代码的质量。

    cobertura 1.9.4.1

    Cobertura 与 JUnit 结合使用,可以在开发过程中提供实时的代码覆盖率数据,进一步强化 TDD 的实践。 ### 使用 Cobertura 的步骤 1. **安装**:首先,你需要下载 Cobertura 的二进制包(cobertura-1.9.4.1-bin.zip...

    用 Cobertura 测量测试覆盖率

    标题中的“用 Cobertura 测量测试覆盖率”指的是在软件开发过程中使用 Cobertura 工具来评估代码的测试覆盖率。测试覆盖率是衡量测试质量的重要指标,它表示代码中被测试用例执行到的比例。Cobertura 是一个开源的 ...

    cobertura工具包

    在实际使用中,你可以将Cobertura集成到你的构建工具(如Maven或Gradle)中,或者通过命令行直接运行。 集成Cobertura到你的项目中,通常需要以下步骤: 1. **配置构建工具**:如果你使用的是Maven,可以在pom.xml...

    Java Cobertura

    1. **修改build.xml文件**:如果使用的是Ant,则需要在build.xml文件中加入Cobertura插件的相关配置。 2. **执行测试**:运行Cobertura提供的测试任务,这将自动收集覆盖率数据并生成报告。 #### 六、解读Cobertura...

    cobertura-1.9.4.1-src.zip

    在实际项目中,Cobertura可以与持续集成工具(如Jenkins、Hudson或Bamboo)结合,每次构建时自动运行测试并生成覆盖率报告,帮助团队监控代码质量。此外,Cobertura还可以与其他代码质量管理工具(如SonarQube)配合...

    cobertura源代码

    在软件开发过程中,代码覆盖率是衡量测试质量的一个重要指标,它可以帮助开发者了解测试的全面性和有效性。Cobertura通过静态分析Java字节码来计算覆盖率,支持JUnit、TestNG等多种测试框架。 首先,让我们深入理解...

    cobertura和weblogic整合使用-代码覆盖率测试

    cobertura和weblogic整合使用-代码覆盖率测试 里面详细步骤和使用说明,并附加xml文件,不懂的可以QQ我,147806015,

    cobertura-2.1.1

    在使用Cobertura-2.1.1时,开发者需要将它集成到构建工具(如Maven、Gradle)中,配置相应的插件和参数。在执行单元测试后,Cobertura会生成覆盖率报告,指出哪些代码需要更多的测试覆盖。这有助于提高代码质量,...

    cobertura-2.1.1-bin.tar

    Cobertura可用于分析Java代码的测试覆盖率。Cobertura根据没有被测试覆盖的代码生成基于HTML的报告。...通过监控可测试的代码,Cobertura允许你使用你选择的测试框架,甚至不需要测试框架就可以运行程序。

    gradle-cobertura-plugin-1.0.zip

    Cobertura插件与Gradle结合,使得在Gradle构建流程中集成代码覆盖率检查变得简单。 另一方面,“javafx-maven-plugin.zip”则是与JavaFX相关的Maven插件。JavaFX是一个用于创建桌面和富互联网应用程序的Java平台,...

Global site tag (gtag.js) - Google Analytics