`
ray_yui
  • 浏览: 220229 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用Cobertura生成测试覆盖率报告

阅读更多

前言:本文章需要JUnit单元测试框架的基础知识,若读者还不具备,请阅读笔者的JUnit文章:http://ray-yui.iteye.com/blog/1914106



UnitTest系列文章:
      使用JUnit开发单元测试:http://ray-yui.iteye.com/blog/1914106
      使用DBUnit扩展JUnit:http://ray-yui.iteye.com/blog/1914979
      使用EasyMock扩展Junithttp://ray-yui.iteye.com/blog/1916170
      使用Cactus测试Servlethttp://ray-yui.iteye.com/blog/1917515
      使用Spring TestContext测试Spring应用http://ray-yui.iteye.com/blog/1921424


什么是测试覆盖率?
      覆盖率是测量测试完整性的一个手段,是衡量测试是否完整的一个标准,我们编写的代码当中每个分支都应该是被覆盖的,这样才能保证测试是完全的,正确的.请留意以下例子

package com.accentrix.ray.service;

import com.accentrix.ray.dao.UserDao;
import com.accentrix.ray.entity.User;

public class UserService {

	UserDao userDao = new UserDao();

	public User login(String username, String password) {
		User user = userDao.get(username);
		if (user == null)
			throw new RuntimeException("用户名不存在");
		if (user.getPassword().equals(password))
			throw new RuntimeException("密码错误");
		return user;
	}
}


      在上面的登陆例子当中,我们如何才算正确覆盖呢?请看以下测试类

package com.accentrix.ray.test;

import junit.framework.Assert;

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

import com.accentrix.ray.entity.User;
import com.accentrix.ray.service.UserService;

public class TestUserService {

	private User user;
	private UserService userService;

	@Before
	public void setUp() {
		user = new User(1, "Ray", "123");
		userService = new UserService();
	}

	@Test(expected = RuntimeException.class)
	public void testUsernameNotExistLogin() {
		// 测试用户名不存在的情况
		userService.login("test", "123");
	}

	@Test(expected = RuntimeException.class)
	public void testPasswordNotMatchLogin() {
		// 测试密码不正确的情况
		userService.login(user.getUsername(), "4444");
	}

	@Test
	public void testAccessLogin() {
		//测试成功登陆
		User loginUser = userService.login(user.getUsername(),
				user.getPassword());
		Assert.assertNotNull(loginUser);
		Assert.assertEquals(loginUser.getUsername(), user.getUsername());
		Assert.assertEquals(loginUser.getPassword(), user.getPassword());
	}
}



      从上面的测试类可以看到,登陆业务中的每一个分支都被单元测试所覆盖,包括异常的覆盖和成功的覆盖

我们怎么检测我们的测试是否完全覆盖的呢?
      通过Cobertura框架就可以自动生成测试率覆盖报告,通过报告可以观察我们的测试覆盖率百分比,和检查究竟还有哪些分支没有被覆盖,也可以使用Eclipse的插件CodePro AnalytiX来进行检测
      Cobertura:http://sourceforge.net/projects/cobertura/files/cobertura/
      CodePro AnalytiX:http://dl.google.com/eclipse/inst/codepro/latest/3.6      

Cobertura使用:
      增加Maven的插件依赖

<plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>cobertura-maven-plugin</artifactId>
	<version>2.4</version>
</plugin>


      此时项目的目录结构如下图



      此时只需简单输入cobertura:cobertura即可,如下图



      此时target当中将会产生出如下图的结构



      打开index.html,点击我们的的测试类,就可以看见如下图



      绿色这表明我们的测试类已经完全覆盖了UserService这个被测试类


总结:
      测试率覆盖报告是评测测试是否完整的一个重要手段,测试覆盖率低下证明测试覆盖不足,当系统进行迭代开发的时候,就会出现各种各样的问题,而且覆盖率也是QA关注的一项重要指标,QA通过该报告和指标和开发者进行沟通,从而解决开发当中遗留的问题
  • 大小: 20.4 KB
  • 大小: 84.1 KB
  • 大小: 50 KB
  • 大小: 36.9 KB
  • 大小: 57.9 KB
1
1
分享到:
评论

相关推荐

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

    【使用Cobertura统计单元测试覆盖率】 在软件开发过程中,单元测试是确保代码质量的重要环节。它能够帮助我们发现潜在的错误,提高代码的可维护性。然而,仅仅编写单元测试是不够的,我们还需要知道这些测试覆盖了...

    用 Cobertura 测量测试覆盖率

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

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

    Cobertura 测试报告可以生成详细的测试报告,例如图 1 显示了对 Flight 测试包运行 Cobertura生成的报告。从该报告中,可以看到从较好(在 com.mangocity. flight.web.helper 包中几乎是 100%)到极差(在 ...

    测试覆盖率报告

    Cobertura是一款流行的Java测试覆盖率工具,它可以生成详细的XML和HTML格式的报告,展示代码的测试覆盖率。使用Cobertura,开发者可以直观地看到每个类、方法和行的覆盖情况,以及整个项目的总体覆盖率。 为了获取...

    cobertura代码覆盖率工具

    它可以生成详细的报告,帮助开发者了解代码的测试覆盖率,从而提高代码的质量。 什么是代码覆盖率? 代码覆盖率是衡量软件测试中代码的执行程度的指标。它衡量了测试用例在执行时,代码中每一行语句的执行次数。...

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

    5. **查看报告**:Cobertura会生成HTML报告,你可以通过浏览器打开查看具体每个类的测试覆盖率情况,包括覆盖了多少行代码、多少方法等。 6. **持续集成**:如果你的项目使用了像Jenkins或Travis CI这样的持续集成...

    Java测试覆盖率工具cobertura1.9

    5. 生成报告:最后,使用`cobertura-report`任务生成HTML格式的覆盖率报告,这将清晰地展示每一行代码的执行情况,包括被测试、未被测试以及测试覆盖率百分比。 `Readme-说明.htm`文件通常包含关于如何安装、配置和...

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

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

    覆盖率报告生成器:生成 Cobertura 风格的 XML 覆盖率报告-matlab开发

    我们将此报告与 Hudson/Jenkins 结合使用来跟踪测试覆盖率。 下面的代码示例说明了如何使用代码。 有关详细信息,请参见 example.m。 %将源代码添加到路径addpath('src'); %import 类、函数导入 edu.stanford....

    测试覆盖率工具

    总结来说,测试覆盖率工具是保证软件质量的重要工具,通过合理的使用和管理,可以帮助我们提高代码的健壮性和可靠性。理解不同类型的覆盖率,选择适合的工具,并将其融入到开发流程中,是提升软件质量的关键。

    cobertura测试代码

    这个过程包括安装Cobertura、配置构建工具(如Maven或Gradle)、运行测试并生成报告,以及解读和改进测试覆盖率。Cobertura能够帮助开发者了解哪些代码片段未被测试覆盖,从而提升整体测试的全面性。 【标签】:...

    cobertura

    5. 查看报告:Cobertura生成的HTML报告会显示代码覆盖率,包括类、方法、行和条件覆盖率等,便于分析。 总之,Cobertura是一个强大的工具,它使得Java开发人员能够度量测试的充分性,并据此改进测试策略。通过在...

    cobertura1.9.1

    5. **查看报告**:Cobertura会生成HTML格式的覆盖率报告,开发者可以浏览这些报告了解测试覆盖率情况,识别未充分测试的部分。 6. **持续集成**:在持续集成(CI)服务器如Jenkins或Travis CI上配置Cobertura,每次...

    cobertura-2.1.1

    5. **XML报告**:Cobertura生成的报告通常为XML格式,方便集成到其他持续集成工具(如Jenkins、Hudson)中,进行自动化测试和质量检查。 6. **可视化界面**:通过Web界面展示覆盖率报告,使结果更直观,便于团队...

    Junit+ant+cobertura示例

    这包括初始化Cobertura数据文件,运行测试并记录覆盖率信息,最后生成覆盖率报告。Cobertura提供的Ant任务如cobertura-instrument用于修改字节码以收集覆盖率信息,而cobertura-report则用于生成HTML或XML格式的覆盖...

    cobertura 1.9.4.1

    **Cobertura 1.9.4.1:单元测试覆盖率工具详解** Cobertura 是一个开源的 Java 代码覆盖率工具,主要用于衡量软件项目中单元测试的覆盖程度。版本 1.9.4.1 是该工具的一个稳定版本,它为开发者提供了详细的信息,...

    cobertura工具包

    总之,Cobertura工具包为Java开发者提供了一种有效的方式来度量和改善他们的单元测试覆盖率,从而提高软件质量。正确地集成和使用Cobertura,可以让你的项目更加健壮,减少因未测试代码引发的问题。

    emma单元测试覆盖率

    EMMA,全称为Emma Metrics for Java,是一款开源的代码覆盖率工具,专为Java应用程序提供精确的测试覆盖率报告。 EMMA的核心功能在于收集和分析执行单元测试后的代码覆盖数据,包括行覆盖率、分支覆盖率、方法覆盖...

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

    总结起来,`lcov_cobertura-1.3.macosx-10.8-intel.exe`是一个用于C/C++项目的测试覆盖率分析工具,它能帮助开发者生成详尽的测试覆盖率报告,从而提升软件的质量和可靠性。尽管它不是直接针对Python的,但对于多...

    Java Cobertura

    其中,测试覆盖率是衡量代码质量的关键指标之一。Cobertura是一款开源的Java代码覆盖率工具,它能够帮助开发者了解哪些部分的代码已经被测试覆盖,哪些部分还需要进一步编写测试用例。 #### 二、Cobertura简介 ...

Global site tag (gtag.js) - Google Analytics