详解Java单元测试之Junit框架使用教程

目录
  • 单元测试
  • Junit单元测试框架
  • 单元测试快速入门

单元测试

单元测试就是针对最小的功能单元编写测试代码,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方法。

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

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

以上就是详解Java单元测试之Junit框架使用教程的详细内容,更多关于Java Junit框架的资料请关注我们其它相关文章!

(0)

相关推荐

  • java编程之单元测试(Junit)实例分析(附实例源码)

    本文实例讲述了java编程之单元测试.分享给大家供大家参考,具体如下: 完整实例代码代码点击此处本站下载. 在有些时候,我们需要对我们自己编写的代码进行单元测试(好处是,减少后期维护的精力和费用),这是一些最基本的模块测试.当然,在进行单元测试的同时也必然得清楚我们测试的代码的内部逻辑实现,这样在测试的时候才能清楚地将我们希望代码逻辑实现得到的结果和测试实际得到的结果进行验证对比. 废话少说,上代码: 首先创建一个java工程,在工程中创建一个被单元测试的Student数据类,如下: packa

  • 详解Java单元测试之JUnit篇

    单元测试是编写测试代码,应该准确.快速地保证程序基本模块的正确性. JUnit是Java单元测试框架,已经在Eclipse中默认安装. JUnit4 JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @BeforeClass 全局只会执行一次,而且是第一个运行 @Before 在测试方法运行之前运行 @Test 测试方法 @After 在测试方法运行之后允许 @AfterClass 全局只会执行一次,而且是最后一个运行 @Ignore 忽略此方法 下面基于Eclipse介绍JUn

  • 详解Java单元测试Junit框架实例

    问题: 1.目前测试存在的问题 2.Junit注意的细节 3.Junit使用规范 4.断言 5.案例 junit(单元测试框架) 1.目前存在的问题 1.目前的测试方法如果需要测试,都需要在main方法上调用 2.目前的结果都需要我们人工比对 2.Junit 注意的细节 1.如果使用junit测试一个方法的时候,在junit窗口上显示绿色那么表示测试正确,如果显示了红色,则代表该方法测试出现了异常不通过 2.如果点击方法名.类名.包名.工程名运行junit分别测试的是对于的方法,类.包中的所有类

  • Java Junit单元测试实例详解

    测试分类 黑盒测试: 不需要写代码, 给输入值, 看程序是否能够输出期望的值 白盒测试: 需要写代码, 关注程序具体的执行流程 Junit 是白盒测试的一种 1.定义一个测试类 (测试用例) 包名: xxx.xxx.test 测试类名: 被测试的类型 + Test 2.定义测试方法: 可以单独运行 方法名: test + 测试的方法名 返回值: void 参数列表: 空参 3.给方法加 @Test 注解 (需要导入 Junit 环境依赖) 4.判定结果: 红色: 失败, 绿色: 成功 一般使用断

  • java单元测试JUnit框架原理与用法实例教程

    本文实例讲述了java单元测试JUnit框架原理与用法.分享给大家供大家参考,具体如下: 1 简介 JUnit是一个Java语言的单元测试框架,它由 Kent Beck 和 Erich Gamma 建立,逐渐成为 xUnit 家族中最为成功的一个. JUnit有它自己的JUnit扩展生态圈,多数Java的开发环境都已经集成了JUnit作为单元测试的工具.在这里,一个单元可以是一个方法.类.包或者子系统.因此,单元测试是指对代码中的最小可测试单元进行检查和验证,以便确保它们正常工作.例如,我们可以

  • 详解Java单元测试之Junit框架使用教程

    目录 单元测试 Junit单元测试框架 单元测试快速入门 单元测试 单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法的正确性 目前测试方法是怎么进行的,存在什么问题? 1.只有一个main方法,如果一个方法的测试失败了,其他方法测试会受到影响 2.无法得到测试的结果报告,需要程序员自己去观察测试是否成功 3.无法实现自动化测试 Junit单元测试框架 1.Junit是使用Java语言实现的单元测试框架,它是开源的

  • 详解Java 10 var关键字和示例教程

    关键要点 Java 10引入了一个闪亮的新功能:局部变量类型推断.对于局部变量,现在可以使用特殊的保留类型名称"var"代替实际类型. 提供这个特性是为了增强Java语言,并将类型推断扩展到局部变量的声明上.这样可以减少板代码,同时仍然保留Java的编译时类型检查. 由于编译器需要通过检查赋值等式右侧(RHS)来推断var的实际类型,因此在某些情况下,这个特性具有局限性,例如在初始化Array和Stream的时候. 如何使用新的"var"来减少样板代码. 在本文中,

  • 详解idea搭建springboot+mybatis框架的教程

    1.打开idea编译器,新建一个项目 2.选择Spring Initializr 勾选Default,完成之后点击[Next] 3.创建项目的文件目录结构以及选择jdk版本信息,设置完成后点击[Next] 4.选择项目所需要的依赖,在Web里面勾选Spring Web 在SQL里勾选需要的依赖,点击[Next] 5.修改项目名称,项目存放路径,点击[finish] 6.创建完成之后需要保持网络良好,因为需要加载刚才所选择的依赖(下载依赖可能需要很长时间,一定要在网络良好的情况下载,并且耐心等待)

  • 详解Java目录操作与文件操作教程

    目录 目录操作 创建目录 判断这个文件或目录是否存在 判断是否是目录 读取目录 删除目录 文件操作 创建文件 删除文件 File对象常用函数 目录操作 创建目录 File类中有两个方法可以用来创建文件夹: mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false.失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建. mkdirs()方法创建一个文件夹和它的所有父文件夹. 创建目录AAA路径为D:AAA public class Mk { pu

  • JBuilder2005单元测试之JUnit框架

    简单的框架 JUnit是由Erich Gamma和Kent Beck开发的开源测试框架,JBuilder集成了这个框架并对此做了扩展.JUnit之所以流行并为广大的开发人员所推崇,一是因为它实战性强,功能强大,二是因为它实在简单.一个产品或框架要能有生命力,最好都具备这样的特点. 简单地讲这个框架提供了许多断言(assert)方法,允许你设置测试的规则,如:assertEquals().assertNull().assertNotSame().assertTrue()等方法,一个测试用例包括了多

  • 详解Java springboot 整合Shiro框架

    目录 Shiro介绍 Springboot整合Shiro Shiro整合Thymeleaf 总结 Shiro介绍 Shiro是一款安全框架,主要的三个类Subject.SecurityManager.Realm Subject:表示当前用户 SecurityManager:安全管理器,即所有与安全有关的操作都会与SecurityManager交互:且其管理着所有Subject:可以看出它是Shiro的核心,它负责与Shiro的其他组件进行交互,它相当于SpringMVC中DispatcherSe

  • 详解Java Socket通信封装MIna框架

    核心类 IoService :Mina中将服务端和客户端都看成是服务,这里提供统一接口IoService,这个接口的作用就是用来处理套接字机制.也正是IoService来监听消息返回消息这些步骤,可以说IoService就是我们Mina中核心 IoProcessor:这个接口在另一个线程上,负责检查是否有数据在通道上读写,也就是说它也拥有自己的Selector,这是与我们使用JAVA NIO 编码时的一个不同之处,通常在JAVA NIO 编码中,我们都是使用一个Selector,也就是不区分Io

  • 详解Java使用JMH进行基准性能测试

    目录 一.前言 二.JMH概述 1.什么是JMH 2.JMH适用的典型场景 3.JMH基本概念 三.JMH的使用 1.快速跑起来 2.JMH常用注解详细介绍 四.小结 附: 一.前言 在日常开发工作当中,开发人员可能有这些困惑:自己写的这个方法性能到底怎么样?在原接口实现方法中添加了新的业务逻辑,对整个接口的性能影响有多少?有多种实现方式(或开源类库),到底哪一种性能更好?- 当遇到类似困惑或者说问题的时候,怎么办呢?当然是测试验证,实践出真知!本文讲述的就是一个方法级别的性能测试工具--JMH

  • 详解java中各类锁的机制

    目录 前言 1. 乐观锁与悲观锁 2. 公平锁与非公平锁 3. 可重入锁 4. 读写锁(共享锁与独占锁) 6. 自旋锁 7. 无锁 / 偏向锁 / 轻量级锁 / 重量级锁 前言 总结java常见的锁 区分各个锁机制以及如何使用 使用方法 锁名 考察线程是否要锁住同步资源 乐观锁和悲观锁 锁住同步资源后,要不要阻塞 不阻塞可以使用自旋锁 一个线程多个流程获取同一把锁 可重入锁 多个线程公用一把锁 读写锁(写的共享锁) 多个线程竞争要不要排队 公平锁与非公平锁 1. 乐观锁与悲观锁 悲观锁:不能同时

随机推荐