JAVA之单元测试:Junit框架

2023-11-12

  •  单元测试:

单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法的正确性

  • 目前测试方法是怎么进行的,存在什么问题?

1、只有一个main方法,如果一个方法的测试失败了,其他方法测试会受到影响

2、无法得到测试的结果报告,需要程序员自己去观察测试是否成功

3、无法实现自动化测试

  • Junit单元测试框架

1、Junit是使用Java语言实现的单元测试框架,它是开源的,Java开发者都应当学习并使用Junit编写单元测试

2、此外,几乎所有的IDE工具都集成了Junit,这样我们就可以直接在IDE中编写并运行Junit测试,Junit目前最新版本是5

  • Junit优点

1、Junit可以灵活的选择执行哪些测试方法,可以一键执行全部测试方法

2、Junit可以生成全部方法的测试报告

3、Junit可以生成测试报告,如果测试良好则是绿色,如果测试失败则是红色

4、单元测试中的某个方法测试失败了,不会影响其他测试方法的测试

  • Junit单元测试是做什么的?

测试类中的方法的正确性的

单元测试快速入门 :

需求:使用单元测试进行业务方法预期结果、正确性测试的快速入门

分析:

1、将Junit的jar包导入到项目中

IDEA通常整合好了Junit框架,一般不需要导入

如果IDEA没有整合好,需要自己手工导入两个Junit的jar包到模块

2、编写测试方法:该测试方法必须是公共的无参数无返回值的非静态方法

3、在测试方法上使用@Test注解:标注该方法是一个测试方法

4、在测试方法中完成被测试方法的预期正确性测试

5、选中测试方法,选择Junit运行,如果测试良好则是绿色,如果测试失败,则是红色

 业务类:

//业务方法
public class 单元测试_Junit框架 {
    public String loginName(String loginName,String passWord){
        if("YAn".equals(loginName)&&"123456".equals(passWord)){
            return "登录成功";
        }else{
            return "登录失败,密码或者用户名错误";
        }
    }
    public void selectName(){
        //这里我们故意写一个bug,方便测试
        System.out.println(10/0);
        System.out.println("查询成功!");
    }
}

 测试方法:

import org.junit.Assert;
import org.junit.Test;

//测试方法
public class 单元测试_Junit框架text {
    /*
    测试方法注意点:
    1、必须是公开的、无参、无返回值的方法
    2、测试方法必须使用@Test注解标记
     */
    @Test
    public void test(){
        单元测试_Junit框架 t=new 单元测试_Junit框架();
        String ts=t.loginName("YAn","123456");

        //进行预期结果的正确性测试:断言
        Assert.assertEquals("您的业务功能可能出现了问题","登录成功",ts);
    }
    @Test
    public void selectName(){
        单元测试_Junit框架 ts=new 单元测试_Junit框架();
        ts.selectName();
    }
}

 两个测试方法运行后结果:

 如果您的项目被人动了,和你的预期结果不一样,则是这样的:

 单元测试常用注解(博主这里用的是版本4):

 业务类修改一点点,让测试方法都没有bug

//业务方法
public class 单元测试_Junit框架 {
    public String loginName(String loginName,String passWord){
        if("YAn".equals(loginName)&&"123456".equals(passWord)){
            return "登录成功";
        }else{
            return "登录失败,密码或者用户名错误";
        }
    }
    public void selectName(){
        System.out.println(10/2);
        System.out.println("查询成功!");
    }
}

 测试方法:

import org.junit.*;

//测试方法
public class 单元测试_Junit框架text {
//修饰实例方法的
    @Before
    public void Before(){
        System.out.println("Before方法运行");
    }
    @After
    public void After(){
        System.out.println("After方法运行");
    }
    //修饰静态方法的
    @BeforeClass
    public static void BeforeClass(){
        System.out.println("BeforeClass方法运行");
    }
    @AfterClass
    public static void AfterClass(){
        System.out.println("AfterClass方法运行");
    }
    /*
    测试方法注意点:
    1、必须是公开的、无参、无返回值的方法
    2、测试方法必须使用@Test注解标记
     */
    @Test
    public void test(){
        单元测试_Junit框架 t=new 单元测试_Junit框架();
        String ts=t.loginName("YAn","123456");

        //进行预期结果的正确性测试:断言
        Assert.assertEquals("您的业务功能可能出现了问题","登录成功",ts);
    }
    @Test
    public void selectName(){
        单元测试_Junit框架 ts=new 单元测试_Junit框架();
        ts.selectName();
    }
}

 运行结果:

可以看出最先运行的是BeforeClass测试方法,最后结束的是AfterClass测试方法。

先执行Before方法,然后运行里面的测试内容,再运行After方法。

开始执行的方法:初始化资源

执行完之后的方法:释放资源

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA之单元测试:Junit框架 的相关文章

随机推荐

  • 双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图

    双系统ubuntu20 04 neotic版本 从0实现Gazebo仿真slam建图 昨晚完成了ROS的多机通讯 还没来得及整理相关操作步骤 在进行实际小车的实验之前 还是先打算在仿真环境中进行测试 熟悉相关的操作步骤 计划通过虚拟机 笔记
  • 【实验分享】CCIE—BGP反射器实验

    实验目的 l掌握BGP反射器的运行原理 l理解反射器的用途以及好处 实验说明 l通过此实验练习 可以灵活的使用BGP反射器 实验环境 l三台支持SPSERVICES的IOS的路由器 l直通线 实验拓扑 实验步骤 R1 config inte
  • alibaba fastjson jsonarray转list

    String avatar teacherEntity getAvatar if StringUtils isEmpty avatar List
  • Python——元类

    作者 小明 链接 https zhuanlan zhihu com p 30861351 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 什么是元类 理解元类 metaclass 之前 我们先了解下Pytho
  • 阿里云轻量级服务器部署网站 安装java+tomcat+Mysql

    网上关于部署服务器的教程已经是数不胜数 按理来说不应该重复造轮子 但是网上的教程没有很好的整合文章 于是乎笔者本着写一篇整合性 参考性比较强的角度出发写了这篇文章 本文详细写了阿里云轻量级服务器的安装jdk tomcat mysql部署简单
  • Window 10 系统 在命令行中输入python会跳转到商店问题解决

    在Windows 10 中配置了python的环境变量 但是在命令行中输入python会跳转到商店 这是由于在环境变量中path配置了 USERPROFILE AppData Local Microsoft WindowsApps 导致 只
  • 东北大学acm训练第五周

    include
  • mysql using filesort

    今天在explain一个MySQL的sql语句的时候 产生了 如下的结果 extra那一栏多了一个Using filesort 而却type也是ALL这说明了查询的结果是全表扫描 可是笔者明明就在 public time字段加了索引 然而笔
  • 只通过com.alibaba.fastjson.JSONArray实现okHttp下String转换JSONArray

    我的Android不能导入常见的那六个包 会严重报错 我改了很久很久还是不能解决错误 也就不能使用net sf包中的JSONArray 直接使用new JSONArray str 给像我一样不能导入包的同学介绍一种方法 import com
  • 浅谈 js reduce()

    reduce 为数组中的每一个元素依次 执行回调函数 不包括数组中被删除的元素或者未赋值的元素 接受四个参数 初始值 或者上次回调函数的返回值 当前元素值 当前索引 调用reduce的数组 语法 arr reduce function pr
  • 在电脑上安装虚拟机

    百度搜索一下 VMware Workstation 下载安装完成之后 找个破解码破解了即可 然后就下载对应的操作系统的iso文件 加载到虚拟机中即可
  • 进制数字的输入和输出

    写个程序 它读取一个整数并以二进制 八进制 和十六进制输出 以十六进制浮点数输出倒数 public class test1 public static void main String args 写个程序 它读取一个整数并以二进制 八进制
  • 免费公开课

    https www edx org course
  • 【Visual Studio】调试过程中VS卡死无响应

    最近在使用vs2022 debug调试过程中 经常出现vs2022直接卡死无响应 解决方案 第一种原因 是加载符号导致 调试 选项 符号 1 取消勾选 xxx 符号服务器 2 选择 仅加载指定的模块 第二种情况 VS卡死后 把崩溃dmp导出
  • 实时操作系统-与QNX比较-qnx系统优势-qnx性能分析-qnx系统性能分析

    锋影 e mail 174176320 qq com LynxOS QNX Linux的分析和比较 本文对四种实时操作系统 RTOS 特性进行分析和比较 它们是 Lynx实时系统公司的LynxOS QNX软件系统有限公司的QNX以及两种具有
  • 解决爬虫登陆电信密码加密问题

    遇见问题 写爬虫抓取电信数据 在登陆时发现密码加密问题 扒出加密函数如下 fn aesEncrypt function n var t CryptoJS MD5 login 189 cn i CryptoJS enc Utf8 parse
  • 使用kettle转换中的JavaScript对密码进行加密和解密

    日常开发中 为了确保账号和密码的安全 时常要对密码进行加密和解密 然而kettle是怎么对密码进行加密和解密的呢 下面的代码需要再转换中的JavaScript中运行 var encrypted password not encrypted
  • JDBC操作postgresql(javaweb)

    首先 postgresql的几个常见 语句结尾一定要加分号 语句结尾一定要加分号 语句结尾一定要加分号 如果是变量不要加引号 sql语句要加引号 1 常见命令 先进入安装的bin目录下 psql exe U postgres 连接数据库 h
  • linux:cloudflare证书申请及应用到nginx

    参考 免费申请网站SSL证书 有效期15年 全站开启https 哔哩哔哩 bilibili 总结 登陆www cloudflare com 注册账号 Add a Site 增加站点 站点设置完毕后Add record 记住这个Proxy s
  • JAVA之单元测试:Junit框架

    单元测试 单元测试就是针对最小的功能单元编写测试代码 Java程序最小的功能单元是方法 因此 单元测试就是针对Java方法的测试 进而检查方法的正确性 目前测试方法是怎么进行的 存在什么问题 1 只有一个main方法 如果一个方法的测试失败