`

Java Coverage(Cobertura)工具

阅读更多

Java Coverage(Cobertura)工具

 最近有点清闲了,我的前辈让我研究Java Coverage的工具,发现这个Cobertura很名就给大家介绍一下吧

首先当然是下载Cobertura的jar包了,这个工具底层是JCoverage,熟悉Jcoverage的对这个也不会陌生的

Cobertura官网 http://cobertura.sourceforge.net/

大家可以了解很多东西,比如现在的作者啊什么,这里就不介绍了

然后点Download,下载二进制版本,比如名字叫cobertura-1.9.4.1(我用的是最新的version)

最后就是实践了。。下面就给大家讲解一下这个到底是什么玩意

Cobertura是一个开源的java工具,它主要用在java test中 内部封装了JCoverage

它是一个用ant全自动的测试工具,很强大。

如果你想测试覆盖率的话,用这个软件是相当不错的

那么下面就举一个简单的例子来说明它的强大

以下为要测试的Java类

package com.example.simple;

/**
 * @author cnchenhl 2011/02/25
 */
public class PrintStringOfYourName {

    private String name = null;
    private int id = 0;
    private String sex = null;
    private int age = 0;
    private String address;

    public String getName() {
        return name;
    }

    public int getId() {
        return id;
    }

    public String getSex() {
        return sex;
    }

    public int getAge() {
        return age;
    }

    public String getAddress() {
        return address;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String toString() {
        return "Name :" + name + "ID :" + id + "Age :" + age + "Sex :" + sex + "Address :" + address;
    }

}

 下面是测试的类test

package com.example.simple;

import junit.framework.TestCase;

import org.junit.Before;
import org.junit.Test;

/**
 * 
 * @author cnchenhl 2011/02/25
 */
public class PrintStringOfYourNameTest extends TestCase {

    @Before
    public void setUp() throws Exception {
        System.setProperty("Dnet.sourceforge.cobertura.datafile", "D:/TestCorbertura/cobertura.ser");
    }

    @Test
    public void testtoString() {
        PrintStringOfYourName printStringOfYourName = new PrintStringOfYourName();
        printStringOfYourName.setAddress("shanghai");
        printStringOfYourName.setAge(24);
        printStringOfYourName.setId(0);
        printStringOfYourName.setName("chenhailong");
        printStringOfYourName.setSex("male");
        String str = printStringOfYourName.toString();
        assertEquals(str, "Name :chenhailongID :0Age :24Sex :maleAddress :shanghai");
    }
}

 好了准备工作完成了

那就准备自己的ant构建文件了。路径大家要仔细看,可能会有问题的,基本都是你们的路径有问题。

还要说明的一点是

System.setProperty("Dnet.sourceforge.cobertura.datafile", ""D:/TestCorbertura/cobertura.ser"");
是必须加的,官网指定的,大家要注意。因为instruments容易找不到cobertura.ser 文件,在ant中也要设定

具体的请看构建文件build.xml

<?xml version="1.0" encoding="UTF-8"?>

<project name="cobertura.examples.basic" default="coverage" basedir=".">
	<property file="build.properties" />
	<property name="bin.dir" value="${basedir}/bin" />
	<property name="target" value="target" />
	<path id="cobertura.classpath">
		<fileset dir="${cobertura.dir}">
			<include name="cobertura.jar" />
			<include name="lib/**/*.jar" />
		</fileset>
	</path>

	<taskdef classpathref="cobertura.classpath" resource="tasks.properties"/>

	<target name="init">
		<mkdir dir="${classes.dir}" />
		<mkdir dir="${instrumented.dir}" />
		<mkdir dir="${reports.xml.dir}" />
		<mkdir dir="${reports.html.dir}" />
		<mkdir dir="${coverage.xml.dir}" />
		<mkdir dir="${coverage.summaryxml.dir}" />
		<mkdir dir="${coverage.html.dir}" />
		<mkdir dir="${target}" />
	</target>

	<target name="compile" depends="init">
		<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="yes">
			<classpath refid="cobertura.classpath" />
		</javac>
	</target>

	<target name="instrument" depends="init,compile">
		<echo message="copy the file to the classes" />
		<copy todir="${classes.dir}">
			<fileset dir="${bin.dir}">
				<include name="**/*.class" />
			</fileset>
		</copy>
		<delete file="cobertura.ser" />
		<delete dir="${instrumented.dir}" />
		<cobertura-instrument todir="${instrumented.dir}">
			<ignore regex="org.apache.log4j.*" />
			<fileset dir="${classes.dir}">
				<include name="**/*.class" />
				<exclude name="**/*Test.class" />
			</fileset>
		</cobertura-instrument>
	</target>

	<target name="test" depends="init,compile">
		<junit fork="yes" dir="${basedir}" failureProperty="test.failed">
			<classpath location="${instrumented.dir}" />
			<classpath location="${classes.dir}" />
			<classpath >
			</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>
	<target name="coverage-check">
		<cobertura-check branchrate="34" totallinerate="100" />
	</target>
	<target name="coverage-report">
		<cobertura-report srcdir="${src.dir}" destdir="${coverage.xml.dir}" format="xml" />
	</target>

	<target name="summary-coverage-report">
		<cobertura-report srcdir="${src.dir}" destdir="${coverage.summaryxml.dir}" format="summaryXml" />
	</target>

	<target name="alternate-coverage-report">
		<cobertura-report destdir="${coverage.html.dir}">
			<fileset dir="${src.dir}">
				<include name="**/*.java"/>
			</fileset>
		</cobertura-report>
	</target>

	<target name="clean" description="Remove all files created by the build/test process.">
		<delete dir="${classes.dir}" />
		<delete dir="${instrumented.dir}" />
		<delete dir="${reports.dir}" />
		<delete file="cobertura.log" />
		<delete file="cobertura.ser" />
		<delete dir="${target}" />
	</target>

	<target name="coverage" depends="compile,instrument,test,coverage-report,summary-coverage-report,alternate-coverage-report,band" description="Compile, instrument ourself, run the tests and generate JUnit and coverage reports." />
	<target name="band">
		<delete file="${target}/report.zip" />
		<jar destfile="${target}/report.zip" basedir="${reports.dir}">
			<manifest>
				<attribute name="Build-Time" value="${timeStamp.day}" />
			</manifest>
		</jar>
	</target>
</project>

 下面是构建文件需要的环境变量

# The source code for the examples can be found in this directory
src.dir=src

# The path to cobertura.jar
cobertura.dir=D:/cobertura-1.9.4.1

# Classes generated by the javac compiler are deposited in this directory
classes.dir=classes

# Instrumented classes are deposited into this directory
instrumented.dir=instrumented

# All reports go into this directory
reports.dir=reports

# Unit test reports from JUnit are deposited into this directory
reports.xml.dir=${reports.dir}/junit-xml
reports.html.dir=${reports.dir}/junit-html

# Coverage reports are deposited into these directories
coverage.xml.dir=${reports.dir}/cobertura-xml
coverage.summaryxml.dir=${reports.dir}/cobertura-summary-xml
coverage.html.dir=${reports.dir}/cobertura-html

 好了以上就大功告成了

哈哈

大家也尝试一下

如果有什么问题的话请给我留言!

谢谢大家的支持

1
7
分享到:
评论

相关推荐

    Java Cobertura

    ### Java Cobertura:代码覆盖率工具详解 #### 一、引言 在软件开发过程中,确保代码的质量至关重要。其中,测试覆盖率是衡量代码质量的关键指标之一。Cobertura是一款开源的Java代码覆盖率工具,它能够帮助开发者...

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

    Cobertura是一款强大的Java代码覆盖率测试工具,它的主要任务是对Java源代码进行度量,以确定测试套件在运行时覆盖了多少代码。这个过程对于确保软件的质量和完整性至关重要,因为全面的测试覆盖率可以帮助开发者...

    cobertura1.9.1

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

    Python库 | lcov_cobertura-1.3.macosx-10.8-intel.exe

    `lcov`是一款开源的代码覆盖率分析工具,常用于C++和C项目,而`cobertura`则是Java平台上的代码覆盖率工具。在这个特定的版本`lcov_cobertura-1.3.macosx-10.8-intel.exe`中,它被编译为适用于Mac OS X 10.8(Intel...

    JQF Zest coverage引导的Java语义模糊测试.zip

    在Java世界中,JQF(Java QuantiFiable Fuzzing)是一个开源框架,它提供了高级的模糊测试工具,尤其是Zest Coverage Guided Fuzzer。这个框架结合了模糊测试和代码覆盖率分析,从而能够更有效地探索代码路径,发现...

    cobertura-plugin:Jenkins cobertura插件

    Cobertura插件 该插件使您可以捕获代码覆盖率报告。 詹金斯(Jenkins)将生成覆盖率趋势报告。Cobertura插件可以在。 版本记录 可以在下面找到版本历史记录: 标记的发行版可以在以下页面上找到: :warning: 此...

    前端-后端java的Util类的工具类

    ├─28个java常用的工具类 │ │ Base64.java │ │ Base64DecodingException.java │ │ CConst.java │ │ CharTools.java │ │ ConfigHelper.java │ │ Counter.java │ │ CTool.java │ │ DateHandler.java ...

    matlab开发-CoverageReportGenerator

    Cobertura是Java平台上的一个开源代码覆盖率工具,而此MATLAB实现则让开发者能够以相似的方式分析和度量MATLAB代码的测试覆盖率。 MATLAB的覆盖率分析允许开发者了解在执行测试用例时,代码中的哪些部分被执行到了...

    Java中的语句、分支和路径覆盖测试

    为了实现这些覆盖标准,开发者可以利用各种自动化测试工具,如JaCoCo、Cobertura等,这些工具能够监控代码执行并提供覆盖率报告。同时,TDD(Test-Driven Development,测试驱动开发)和BDD(Behavior-Driven ...

    测试覆盖率工具

    2. **Cobertura**:也是Java的覆盖率工具,提供XML和HTML格式的报告,便于分析。 3. **Codecov**:云服务形式的覆盖率工具,支持多种编程语言,能够与GitHub等版本控制系统集成,实时展示覆盖率变化。 4. **PyTest...

    Testing Java with JUnit 5 & Mockito学习资料

    了解如何集成JaCoCo或Cobertura等工具来分析测试覆盖率,可以帮助开发者确保测试的质量。 Mockito是一个流行的Java模拟框架,用于隔离被测试代码。在"8. Mockito"中,你将学习如何创建和配置模拟对象,以及如何验证...

    Manning.Test.Driven.TDD.and.Acceptance.TDD.for.Java.Developers

    10. Code Coverage工具:JaCoCo或Cobertura可以帮助分析测试覆盖度,确保大部分代码都经过了测试。 通过深入学习和实践这些技术,Java开发者可以实现更高水平的代码质量和项目管理。《测试驱动开发与验收测试驱动...

    code-coverage-api-plugin:Jenkins代码覆盖率API插件

    特征管道支持现代化的覆盖率表覆盖趋势源代码导航管道支持中的并行执行报告合并REST API 故障条件和灵活的阈值设置其他小功能支持的覆盖率格式嵌入式的其他插件,作为Code Coverage API插件的扩展 ( ) ( ) ( )...

    javaTest:用于平时测试java代码

    7. **Code Coverage**:度量测试覆盖了多少代码,例如JaCoCo或Cobertura工具。 8. **Selenium**:用于Web应用的自动化测试,可以模拟用户交互。 9. **Appium**:移动应用的自动化测试,支持Android和iOS。 10. **...

    pls-wodm_autotest.rar

    6. Code Coverage工具:例如JaCoCo或Cobertura,用于测量测试覆盖率,帮助开发者了解哪些代码尚未被测试覆盖,从而改进测试策略。 7. 集成测试:除了单元测试,可能还有集成测试来验证不同组件之间的交互。这可能...

    tck-coverage:使用JUnit 5生成TCK覆盖率报告

    8. **实践意义**:使用"tck-coverage"这样的工具,可以帮助Java开发者确保他们的实现不仅通过了基本的单元测试,还满足了JCP的严格规范,从而提高了软件的质量和可靠性。 9. **持续集成/持续部署(CI/CD)**:在CI/CD...

    codecoverage

    2. **Cobertura**:另一个早期的Java代码覆盖率工具,它同样支持多种格式的报告输出,并可以集成到持续集成服务器如Jenkins中。 3. **Emma**:虽然现在已经被JaCoCo取代,Emma在过去曾是Java社区广泛使用的代码覆盖...

    jenkins插件

    2. **jacoco.hpi** - JaCoCo (Java Code Coverage) 插件提供了代码覆盖率工具,帮助开发者衡量单元测试对代码覆盖的程度。它生成详细的报告,显示哪些代码行被测试覆盖,有助于提高测试的质量和完整性。 3. **...

    java-testing-journey:各种Java测试框架之旅

    6. **Code Coverage Tools**: 为了确保测试的全面性,代码覆盖率工具如JaCoCo和Cobertura可以测量被测试代码被覆盖的程度。这有助于识别未被测试的代码区域,从而改进测试策略。 7. **Selenium for UI Testing**: ...

    JSCover:JSCover 是一个 JavaScript 代码覆盖率工具,用于测量行、分支和函数覆盖率

    它是流行的工具的增强版本,增加了多项功能,包括用于 CI 集成的分支覆盖率、 LCOV和Cobertura XML报告、用于自动化测试的钩子和HTML 本地存储,以在不使用 iFrame 或 JavaScript 打开的窗口的情况下维护覆盖率数据...

Global site tag (gtag.js) - Google Analytics