eclemma覆盖率
你好朋友, 如果编写好的代码很重要,那么编写覆盖所有业务逻辑的优良Junit测试用例也同样重要。通过编写覆盖业务逻辑的Junit测试用例,我们实际上确保代码的每种方法都能正常工作符合预期,因此减少了在软件开发的后期阶段中获取错误的机会。在本教程中,我们将看到如何使用EclEmma插件来检查Java代码的代码覆盖率,从而可以确保通过Junit测试用例具有良好的覆盖率。
第1步 :
转到以下链接:
第2步 :
单击左侧菜单上的安装->下载选项。
第三步:
右键单击最顶部(最新)链接(在撰写本文时,它是“ eclemma-3.1.2.zip”),然后将Zip保存在您的计算机上。
步骤4 :
将zip提取到您选择的相同位置。
步骤5:
复制提取的文件夹并转到eclipse文件夹(安装了eclipse的位置),然后将此提取的文件夹粘贴到eclipse文件夹中的dropins文件夹中。
步骤6:
重新启动Eclipse。
步骤7:
右键单击项目文件夹,然后选择Coverage As-> JUnit Test,然后单击Coverage按钮,它将运行所有测试用例并检查coverage。
现在,由于在此阶段,我们在服务层的代码中没有任何测试用例,因此我们获得了0.0%的覆盖率,并且所有代码行均显示为红色,这意味着Junit测试中未覆盖这些行。
一般来说 :
如果看到绿色,则表示Junit测试中覆盖了所有这些线条。
如果看到红色,则表示Junit测试未覆盖所有这些线。
如果看到黄色,则表示您的测试已经通过了这些行,但并未涵盖所有测试用例。
接下来,我们将创建一个Spring Boot项目,在其中添加一些代码,然后逐步编写测试用例,并查看EclEmma插件如何提供代码覆盖率。
第八步:
让我们通过创建一个简单的名称为“ eclemma”的Spring Boot项目来了解它的工作原理。请按照我的教程“ 如何使用Spring Initializer创建Spring Boot项目来创建Spring Boot项目”。
步骤9:
在新创建的项目中,按照以下屏幕快照创建具有名称的包和类
第十步:
这是CalculatorService的源代码
package com.blogspot.javasolutionsguide.eclmma.service;
/**
* @author JavaSolutionsGuide
*
*/
public interface CalculatorService {
int add( int a , int b);
int subtract( int a, int b);
}
<br>
<br>
<br>
这是CalcualtorServiceImpl的源代码
package com.blogspot.javasolutionsguide.eclemma.service.impl; /**
* @author javaSolutionsGuide
*
*/
public class CalculatorServiceImpl {
public int add( int a , int b) {
int c = a + b;
return c;
}
public int subtract( int a, int b) {
int c = a - b;
return c;
}
}
步骤11:
因此,首先我们将只为add()方法编写测试用例,然后运行Eclemma coverage
这是add()方法的JUnit测试用例的代码:
package com.blogspot.javasolutionsguide.eclEmma.service.impl;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.blogspot.javasolutionsguide.eclemma.service.impl.CalculatorServiceImpl; /**
* @author JavaSolutionsGuide
*
*/
@RunWith (SpringRunner. class )
@SpringBootTest (classes = {CalculatorServiceImpl. class })
public class CalculatorServiceImplTest {
@Autowired
private CalculatorServiceImpl calculatorService;
@Test
public void add_for_givenTwoInteger_shouldReturn_sumOfTwo() {
Assert.assertEquals( "Test case to check if add returns sum of two give positive numbers" , 3 , calculatorService.add( 1 , 2 ));
}
}
<br>
<br>
<br>
第十二步:
现在让我们再次运行EclEmma Coverage并查看结果:
可以看到,CalculatorServiceImpl类的覆盖率从0.0%增加到60%,并且运行覆盖率后,add()方法的代码行现在变为绿色,这意味着Junit测试覆盖了这些行。
步骤13:
同样,我们将为减法编写所有测试用例并查看覆盖率。
在CalculatorServiceImplTest.java中添加以下测试用例:
@Test
public void subtract_for_givenTwoInteger_shouldReturn_differenceOfTwo() {
Assert.assertEquals( "Test case to check if subtract returns sum of two give positive numbers" , 1 , calculatorService.subtract( 2 , 1 ));
}
就像我们现在看到的那样,CalculatorServiceImpl类的覆盖率是100%。
概要
因此,在本教程中,我们学习了如何使用EclEmma插件查看您代码的Junit测试覆盖范围。基于Junit代码覆盖率报告,我们可以找出Junit覆盖了我们代码的哪些部分,以及仍然左边,然后我们可以为未发现的代码行编写更多的测试用例,这将确保我们已通过Junit涵盖了所有必需的代码行,从而提高了代码质量。
如果您喜欢阅读本文,请与您认为有帮助的朋友,同事分享。
翻译自: https://www.javacodegeeks.com/2019/08/integrate-use-eclemma-plugin-having-good-junit-coverage.html
eclemma覆盖率