如何集成和使用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;解决问题

java jax-rs_在Java EE 7和WildFly中使用Bean验证来验证JAX-RS资源数据

java jax-rs我过去已经两次接触过这个主题。 首先&#xff0c;在我的文章《 在Java EE 6中将Bean验证与JAX-RS集成》中 &#xff0c;描述了甚至在Java EE平台规范中尚未定义之前&#xff0c;如何在JBoss AS 7中将Bean验证与JAX-RS结合使用。 后来&#xff0c;在一篇为《 JAX Ma…

计算机网络整体框架理解与把握(持续更新)

本文主要依据《计算机网络&#xff1a;自顶而下的算法》 网络可以分为5层。自顶而下分别是应用层、运输层、网络层、链路层、物理层。而大多数主要关注于前三层。 自顶而下设计&#xff0c;当然&#xff0c;最先关注的是应用层。应用层与普通用户接触最广泛。并且&#xff0c;网…

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

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

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

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

对于计算机网络的整体框架的概括(转载)

作者&#xff1a; 阮一峰 日期&#xff1a; 2012年5月31日 我们每天使用互联网&#xff0c;你是否想过&#xff0c;它是如何实现的&#xff1f; 全世界几十亿台电脑&#xff0c;连接在一起&#xff0c;两两通信。上海的某一块网卡送出信号&#xff0c;洛杉矶的另一块网卡居然…

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

工业交换机&#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;作为今天以太网的主流…

Sublime Text提示Unable to download XXX. Please view the console for more details安装插件失败解决

安装插件时&#xff0c;弹出提示框&#xff1a; Package Control Unable to download XXX. Please view the console for more details. 一番搜索后在github上找到答案 1.打开Sublime Text&#xff0c;Preferences ->Package Settings->Package Control->Settings-Use…

从响应式Spring Data存储库流式传输实时更新

这篇文章详细介绍了从数据库到对该数据感兴趣的任何其他组件进行流更新的幼稚实现。 更确切地说&#xff0c;如何更改Spring Data R2DBC存储库以向相关订阅者发出事件。 对R2DBC和Spring的一点背景知识将对这篇文章有所帮助。 我以前的著作“ 使用 Microsoft SQL Server的 Spr…

ns3入门案例1 first.cc

1、目录结构 example&#xff1a;1、根文件下自带示例结构&#xff0c;作为良好的参考资源 2、src环境下中各模块中example作为资源 build&#xff1a; 编译后文件以及可执行文件 src&#xff1a;各模块源代码 2、新代码运行 将新脚本放在scratch文件夹中&#xff0c;该目…

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

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

ubuntu下面 将桌面换成 英文

1. 我们可以先将目录都改成英文的。 export LANGen_US 执行 xdg-user-dirs-gtk-update 这时会弹出一个配置界面&#xff0c;将所有中文的用户目录切换到英文。选中不再提示&#xff0c;确定。 这时&#xff0c;会删除没有内容的用户目录&#xff0c;但有内容的用户目录会保…

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

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

ns3 入门案例2:third.cc

代码分析 1 头文件 #include "ns3/core-module.h" #include "ns3/point-to-point-module.h" #include "ns3/network-module.h" #include "ns3/applications-module.h" #include "ns3/mobility-module.h" #include "n…