eclipse中怎样用cobertura生成覆盖率报告
展开全部
什么是测试覆盖率?
覆盖率是测量测试完整性的一个手段,是衡量测试是否完整的一个标准,我们编写的代码当中每个分支都应该是被覆盖的,这样才能保证测试是完全的,正确的.
请留意以下例子
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通过该报告和指标和开发者进行沟通,从而解决开发当中遗留的问题
覆盖率是测量测试完整性的一个手段,是衡量测试是否完整的一个标准,我们编写的代码当中每个分支都应该是被覆盖的,这样才能保证测试是完全的,正确的.
请留意以下例子
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通过该报告和指标和开发者进行沟通,从而解决开发当中遗留的问题
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询