java maven jacoco_用jacoco和junit对maven项目进行java代码覆盖率测试

在实际的项目过程当中,我们对java项目的测试工作往往存在反复、漏测的情况,导致项目会出现一些意想不到的情况。所以Junit单元测试可以作为项目执行过程当中一个不错的单元测试方案。

如果项目中使用Junit做单元测试,那么测试的覆盖率就变得尤为重要。之前使用了很多其他的测试覆盖率的插件,但是亲测发现,jacoco绝对算得上是一个很不错的选择。

那么jacoco具体在测试覆盖率上有哪些优势呢?我认为,jacoco有以下优势:

1.完美兼容Junit,针对Junit的测试用例,可以准确的检测覆盖率。

2.使用简单方便,只需少量配置和一条命令,就可以生成测试覆盖率的文档。

3.文档形式多样,有xml、csv、和html格式的报告。

4.测试报告详尽,可以明确的标记具体代码的执行轨迹。便于开发补充和修改用例。

这里,我简单的介绍下jacoco的使用:

首先,我们需要在maven的配置文件中配置如下:

org.jacoco

jacoco-maven-plugin

0.8.3

default-prepare-agent

prepare-agent

default-report

prepare-package

report

default-check

check

BUNDLE

implementation is needed only for Maven 2

COMPLEXITY

COVEREDRATIO

0.60

上述配置完成后,如果需要生成测试文档,只需要执行如下命令:

mvn clean install jacoco:prepare-agent jacoco:report

生成出来的html文件效果下:

附上测试的源代码(JacocoTest.java):

package com.yin.test;

public class JacocoTest {

public int maxNum(int... nums) {

if (nums.length == 0) {

throw new IllegalArgumentException("参数异常!");

}

int maxval = nums[0];

for (int i : nums) {

if (maxval >= i) {

continue;

}

maxval = i;

}

return maxval;

}

public String print(int val) {

if (val < 10) {

return "0" + val;

}

return String.valueOf(val);

}

}

测试代码(JacocoJunitTest.java):

package com.yin.test;

import org.junit.Assert;

import org.junit.Rule;

import org.junit.Test;

import org.junit.rules.ExpectedException;

public class JacocoJunitTest {

private JacocoTest test = new JacocoTest();

/**

* 测试最大值函数(正常情况)

*/

@Test

public void testMaxNumNormal() {

Assert.assertEquals(3, test.maxNum(2, 1, 3));

}

@Rule

public ExpectedException exc = ExpectedException.none();

/**

* 测试最大值函数(正常情况)

*/

@Test

public void testMaxNumException() {

exc.expect(IllegalArgumentException.class);

exc.expectMessage("参数异常!");

test.maxNum();

}

@Test

public void testPrint() {

Assert.assertEquals("09", test.print(9));

Assert.assertEquals("11", test.print(11));

}

}

如果测试过程中,发现有覆盖不全的场景,也会明确标注出来:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值