如何集成和使用EclEmma插件来获得良好的Junit覆盖率

你好朋友,

如果编写好的代码很重要,那么编写覆盖所有业务逻辑的优良Junit测试用例也同样重要。通过编写覆盖业务逻辑的Junit测试用例,我们实际上确保代码的每种方法都能正常工作按照预期进行,因此减少了在软件开发的后期阶段中获取错误的机会。
在本教程中,我们将看到如何使用EclEmma插件来检查Java代码的代码覆盖率,从而可以确保通过Junit测试用例具有良好的覆盖率。

步骤1 :

转到以下链接:

https://www.eclemma.org/

第2步 :

单击左侧菜单上的安装->下载选项。

第三步:

右键单击最顶部(最新)链接(在撰写本文时,它是“ eclemma-3.1.2.zip”),然后将Zip保存在您的计算机上。

第四步 :

将zip提取到您选择的相同位置。

步骤5:

复制提取的文件夹并转到eclipse文件夹(安装了eclipse的位置),然后将此提取的文件夹粘贴到eclipse文件夹内的dropins文件夹中。

步骤6:

重新启动Eclipse。

步骤7:

右键单击项目文件夹,然后选择Coverage As-> JUnit Test,然后单击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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值