IDEA 单元测试覆盖技巧分享

 更新时间:2021年01月22日 08:40:33   作者:蓝星花  
这篇文章主要介绍了IDEA 单元测试覆盖技巧分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1.前言

通常情况下,项目经理or项目总监会分阶段的问测试负责人,本阶段的测试覆盖率是多少?在工作中,当被问到“如何提高代码质量”,回答无非如下几个,增加评审,代码规约,单元测试。不知起自何年何月,如今一些机构开始引入“单元测试覆盖率”的概念,并由此对程序员提出了覆盖率要达到70%,90%,以此来评判程序员工作的质量,以及产品的质量。这里先预为单元测试下定义以免混淆,即,基于Junit,类与代码级别的,与运行时无关的白盒测试。

2.我的理解

测试覆盖率应该区分自动化测试覆盖率和功能测试用例覆盖率。

对于自动化测试覆盖率,应是=(自动化测试脚本执行过的代码/总代码)

对于测试用例覆盖率,应是=(测试用例覆盖的功能点/产品设计的所有功能点)

3.什么是单元测试

单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

3.1好处

1,单元测试不但会使你的工作完成得更轻松。而且会令你的设计会变得更好,甚至大大减少你花在调试上面的时间

2,提高代码质量

3,减少bug,快速定位bug

4,放心地修改、重构

5,显得专业(玩笑话)

3.2注意

1,不能只测试一条正确执行路径,要考虑到所有可能的情况

2,要确保所有测试都能够通过,避免间接损害

3,如果一个函数复杂到无法单测,那就说明模块的抽象有问题

(1)语句覆盖法

(2)分支覆盖法

(3)条件覆盖法

(4)组合条件覆盖法

4.IDEA 单元测试覆盖技巧

package com.example.demoo.junit;
/**
 * Created by lanxinghua on 2018/7/26.
 */
public class Myclass {
  public String test1(){
    return "test1!";
  }

  public String test2(){
    return "test2";
  }
}
package com.example.demoo;
import com.example.demoo.junit.Myclass;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@SpringBootTest
public class JunitTest {
  private Myclass myclass;
  @Before
  public void setUp() {
    myclass = new Myclass();
  }

  @Test
  public void testHello(){
    myclass.test1();
  }
}

1)启动单元测试覆盖模式(Run “*” with Coverage)

2)查看代码覆盖率结果

工具栏按钮:

3)生成代码覆盖率报告

在里面 生成覆盖报告对话框打开,指定存储生成的报告的目标目录,并且可选择选中该复选框在浏览器中打开生成的HTML。

扩展

随着公司的发展,自动化测试脚本的持续集成逐渐要被做起来,那就面临一个自检的问题,我的测试脚本、测试用例是否全覆盖了开发的代码。如何直观地看到代码覆盖率?

本地统计代码覆盖率:jacoco,cobertura

远程统计代码覆盖率:jenkins上下载jacoco插件,并在构建后配置

如果把测试工程(T)跟开发工程(D)分开为两个独立的工程,D部署在独立的服务器上,T工程该如何远程获取D的覆盖率数据呢?

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • 多jdk环境下指定springboot外部配置文件详解

    多jdk环境下指定springboot外部配置文件详解

    这篇文章主要为大家介绍了多jdk环境下指定springboot外部配置文件详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • springboot如何获取yml文件的自定义参数

    springboot如何获取yml文件的自定义参数

    这篇文章主要介绍了springboot如何获取yml文件的自定义参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 子线程任务发生异常时主线程事务回滚示例过程

    子线程任务发生异常时主线程事务回滚示例过程

    这篇文章主要为大家介绍了子线程任务发生了异常时主线程事务如何回滚的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Java 深入理解创建型设计模式之原型模式

    Java 深入理解创建型设计模式之原型模式

    原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节
    2022-02-02
  • Java连接MySQL数据库命令行程序过程

    Java连接MySQL数据库命令行程序过程

    SQL编程包括两种形式,一种是过程化编程,主要通过数据库交互式工具,通过存储过程、触发器、函数等形式的编程;另一种是嵌入式SQL编程,将SQL语句嵌入到高级开发语言,完成数据的各种操作
    2021-10-10
  • Spring Boot 表单验证篇

    Spring Boot 表单验证篇

    在表单提交的时候,我们需要进行验证。下面通过本篇文章给大家介绍Spring Boot 表单验证篇,需要的朋友可以参考下
    2017-08-08
  • 一篇文章带你了解Java容器,面板及四大布局管理器应用

    一篇文章带你了解Java容器,面板及四大布局管理器应用

    这篇文章主要介绍了JAVA布局管理器与面板组合代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-08-08
  • Java爬虫实现爬取京东上的手机搜索页面 HttpCliient+Jsoup

    Java爬虫实现爬取京东上的手机搜索页面 HttpCliient+Jsoup

    下面小编就为大家分享一篇Java爬虫实现爬取京东上的手机搜索页面 HttpCliient+Jsoup,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • 通过FeignClient调用微服务提供的分页对象IPage报错的解决

    通过FeignClient调用微服务提供的分页对象IPage报错的解决

    这篇文章主要介绍了通过FeignClient调用微服务提供的分页对象IPage报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java生成唯一ID的三种方法总结

    Java生成唯一ID的三种方法总结

    单机环境下,可以使用AtomicLong来生成唯一ID;而在需要非纯数字形式的场景中,可以通过UUID结合哈希函数如MD5或SHA-1转换成数字,但需注意哈希碰撞的低概率风险;对于分布式系统,模拟Snowflake算法是一种复杂但有效的方法,每种方法都有其适用场景和潜在问题
    2024-09-09

最新评论