如何集成和使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341541.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业4.0时代,工业交换机在智能电网建设中有什么作用?

随着工业以太网技术、光纤技术和信息处理技术的发展&#xff0c;并向电力行业的渗透&#xff0c;在当前技术条件支持下&#xff0c;工业以太网通信在运行过程中表现出高可靠性、灵活性和扩展性等优点&#xff0c;对优化整个电网系统设备元件之间的连接和信息传输有着重要的作用…

工业交换机的性能优势有哪些?

工业交换机也称作工业以太网交换机&#xff0c;即应用于工业控制领域的以太网交换机设备&#xff0c;对工业交换机我们有多少人了解呢&#xff1f;究竟何为工业交换机&#xff0c;工业交换机有哪些功能呢&#xff1f;接下来就由飞畅科技的小编来为大家详细讲解下吧&#xff01;…

谷歌浏览器出现“远程计算机访问失败问题”

转载链接 一、进入浏览器设置 二、“internet选项”目录 三、设置 只勾选一个&#xff0c;其余均不选。 四、打开新网页&#xff0c;解决问题

工业交换机都有哪些优势,该如何挑选

相对普通交换机而言&#xff0c;工业交换机在普通交换机的基础之上加强了功能&#xff0c;端口配置和产品系列更加丰富和灵活&#xff0c;能够满足各种工业领域的需求。广泛应用于智慧交通、安防监控、风电光伏、煤矿等领域。尤其是电力、交通、冶金被称为工业交换机应用的三大…

用Java中的抽象类扩展抽象类

示例问题 当我创建Java :: Geci抽象类AbstractFieldsGenerator和AbstractFilteredFieldsGenerator我遇到了一个不太复杂的设计问题。 我想强调一下&#xff0c;对于某些人来说&#xff0c;这个问题和设计可能看起来很明显&#xff0c;但是在我最近与一位初级开发人员&#xff0…

工业交换机与工业路由器的区别

工业交换机&#xff08;也叫工业以太网交换机&#xff09;&#xff0c;即应用于工业控制领域的以太网交换机设备&#xff0c;由于采用的网络标准&#xff0c;其开放性好、应用广泛以及价格低廉、使用的是透明而统一的TCP/IP协议&#xff0c;以太网已经成为工业控制领域的主要通…

Sublime介绍安装和使用(转载)

转载&#xff1a; 原文链接&#xff1a;https://blog.csdn.net/ITTechnologyHome/article/details/80486235 1.1 Sublime介绍 Sublime是一款跨平台、收费的文件编辑器&#xff0c;可以用来编写HTML,CSS,JavaScript,PHP等应用程序。 1.2 Sublime特点 跨平台,支持主流操作系统…

工业交换机在城市智慧轨道交通中的应用分析

俗话说&#xff0c;城市建设&#xff0c;交通先行&#xff0c;轨道交通是解决“城市病”的一把金钥匙&#xff0c;而智慧交通更是建设智慧城市的重要构成部分。从2009年开始&#xff0c;我国就逐渐进入城市轨道交通建设的高潮&#xff0c;并逐年扩大地铁市场。发展以轨道交通为…

apache hive_Hive:使用Apache Hive查询客户最喜欢的搜索查询和产品视图计数

apache hive这篇文章介绍了如何使用Apache Hive查询Hadoop下存储的搜索点击数据。 我们将以示例的形式生成有关总产品浏览量的客户最爱搜索查询和统计信息。 继续之前的文章 使用大数据分析客户产品搜索点击次数 &#xff0c; Flume&#xff1a;使用Apache Flume收集客户产品…

工业交换机在工业通信领域的应用分析

工业交换机是专门为满足灵活多变的工业应用需求而设计&#xff0c;提供一种高性价比工业以太网通讯解决方案。工业交换机&#xff0c;作为我们广为使用的局域网硬件设备&#xff0c;一直为大家所熟悉。它的普及程度其实是由于以太网的广泛使用&#xff0c;作为今天以太网的主流…

工业以太网交换机都有哪些作用

工业以太网交换机由于使用及定位的关系&#xff0c;区别于商业交换机&#xff0c;它更关注稳定性&#xff0c;耐高温&#xff0c;耐振动&#xff0c;耐腐蚀等一些工业特性。工业以太网交换机以其较高的防护等级&#xff08;一般IP40)、较强的电磁兼容性&#xff08;EMS 4级&…

光纤交换机是什么,光纤交换机的作用是什么?

随着网络的发展&#xff0c;先后出现了交换机、路由器、电话光端机等网络设备&#xff0c;在数据存储网络中&#xff0c;光纤交换机起到了重要的作用。今天飞畅科技的小编来为大家介绍下光纤交换机及光纤交换机的作用&#xff0c;一起来看看吧&#xff01; 光纤交换机的简介 光…

光纤交换机产品功能介绍

光纤交换机是一种高速的网络传输中继设备&#xff0c;又叫做光纤通道交换机、SAN交换机&#xff0c;光纤传输的优点是速度快、抗干扰能力强。那么&#xff0c;光纤交换机有哪些功能呢&#xff1f;接下来我们就跟随飞畅科技的小编一起来看看吧&#xff01; 通道协议支持 SAN交换…

光纤交换机光纤通道协议介绍

光纤通道&#xff08;FC&#xff0c;Fibre Channel&#xff09;协议是美国国家标准所指定的一种串行高速、低延时、低误码的标准协议能够为存储设备、IP 数据网、音频流等应用提供高速数据传输的骨干网络技术。随着光纤通道在不同领域的应用&#xff0c;在光纤通道协议的基础上…

POI创建的文档具有不同条件的灵活样式

介绍 这篇文章解释了基于各种标准将样式应用于文档的困难并提供了解决方案。 Java编程中的常见任务之一是根据存储在数据库中的数据创建Excel报告。 在这些情况下&#xff0c;Java程序员使用POI :-)。 这些报告通常具有严格的样式和数据格式规则。 数据通常是SQL查询执行的结果…

在NS-3中安装可视化工具pyviz的一些问题的解决

转载声明&#xff1a;本文为寻同学原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 原文链接&#xff1a;https://blog.csdn.net/qq_31676673/article/details/88107454 在NS-3中安装可视化工具pyviz的一些问题的解决 PyViz是一…

什么是光纤交换机?

光纤交换机是一种高速的网络传输中继设备&#xff0c;又叫做光纤通道交换机、SAN交换机&#xff0c;它较普通交换机而言&#xff0c;采用了光纤电缆作为传输介质。光纤传输的优点是速度快、抗干扰能力强。光纤交换机主要有两种&#xff0c;一是用来连接存储的FC交换机。另一种是…

java 调用 js性能_太快了,太变态了:什么会影响Java中的方法调用性能?

java 调用 js性能那么这是怎么回事&#xff1f; 让我们从一个简短的故事开始。 几周前&#xff0c;我提议对Java核心libs邮件列表进行更改 &#xff0c;以覆盖当前final一些方法。 这刺激了一些讨论主题-其中之一是其中一个性能回归通过采取这是一个方法被引入的程度final免遭停…

VMware虚拟机扩展Ubuntu系统磁盘空间

转载&#xff1a;https://www.cnblogs.com/dongry/p/10620894.html 1 首先给虚拟机扩容 虚拟机->设置->硬盘->实用程序->扩展磁盘容量 2 启动Ubuntu系统 2.1 打开终端安装gparted&#xff0c;sudo apt-get install gparted&#xff1b;输入sudo gparted打开gparte…

操作方法:具有多个Mongo存储库和Kotlin的Spring Boot 2 Web应用程序

首先&#xff0c;免责声明&#xff1a;如果您正在编写微服务 &#xff08;每个人现在都对吗&#xff1f;&#xff09;并希望它是惯用的 &#xff0c;那么通常不会在其中使用几个不同的数据源。 图片取自Pixabay© https: //pixabay.com/illustrations/software-binary-sys…