Java进阶之路—单元测试Juint(完整详解Juint使用以及Juin注解,附有代码+案例)

news2024/11/28 9:25:00

文章目录

  • 单元测试Juint
    • 35.1 概述
    • 35.2 用法
      • 手动导包
      • 正确的使用方式
    • 35.3 Junit常用注解

单元测试Juint

35.1 概述

针对最小功能单元编写测试代码,Java中最小功能单元是方法,因此单元测试就是针对Java方法的测试。

对部分代码进行测试。

35.2 用法

(如图已经导入juint包可以直接使用)

在这里插入图片描述

未导入情况:

  • 一定要先写一个方法。
  • 在这个方法的上面写@Test
  • 鼠标点一下@Test 按alt + 回车,点击Junit4此时就可以自动导包。

如果自动导包失败(连接外网,或者自己手动导包)

如果导包成功在左下角就会出现Junit4的相关jar包

手动导包

1,在当前模块下,右键新建一个文件夹(lib)

2,两个jar包(hamcrest-core-1.3.jar和junit-4.13.1.jar),拷贝到lib文件夹里面

3,选中两个jar右键点击add as a lib…

4,到代码中,找到@Test,按alt + 回车,再来导入。

注意点:

  • 只能直接运行无参无返回值的非静态方法
  • 想要运行谁,就右键点击哪个方法。如果想要运行一个类里面所有的测试方法,选择类名,有点点击即可。

如下代码:

public class JunitDemo {

    @Test
    public void method1(){
        int a = 6;
        int b = 8;
        System.out.println(a+b);
    }

    @Test
    public void method2(){
        int a = 6;
        int b = 8;
        System.out.println(a-b);
    }

}

正确的使用方式

1,新建测试类

2,新建测试方法(要测试的方法名 + Test) methodTest

3,在这个方法中直接调用要测试的方法

4,在测试方法的上面写@Test

public class JunitDemo {

    public int add(int a ,int b){
        return a+b;
    }
}
============================
 public class JunitDemo2 {

    // 测试JunitDemo类中的add方法
    @Test
    public void methodTest(){
        JunitDemo jd = new JunitDemo();
        int result =  jd.sum(2,5);
        // 断言:
        // 参数一:当两个结果一样时,出现的提示信息
        // 参数二:实际运行的结果
        // 参数三:预计结果
        Assert.assertEquals("add方法出错了",result,7);
    }

}

35.3 Junit常用注解

注解说说明
@Test测试方法
@Before用来修饰实列方法,该方法会在每一个测试方法之前执行一次
@After用来修饰实列方法,该方法会在每一个测试方法执行之后执行一次
@BeforeClass用来修饰静态方法,该方法会在所有测试方法之前只执行一次
@AfterClass用来修饰实列方法,该方法会在所有测试方法之后执行一次
  • 开始执行的方法:初始化资源
  • 执行完之后的方法:释放资源
public class JunitDemo3 {

    // 需求:测试File类中的delete方法是否书写正确

    // 测试防止对原数据造成污染

    // 1.利用before去对数据进行初始化操作
    // 2.利用Test真正的去测试
    // 3.利用After去还原数据

    @Before
    public void beforeMethod() throws IOException {
        // 先备份
File f1 = new File("C:\\Users\\23853\\Desktop\\a.txt");
File f2 = new File("C:\\Users\\23853\\Desktop\\copy_a.txt");

        FileInputStream fis = new FileInputStream(f1);
        FileOutputStream fos = new FileOutputStream(f2);

        int b ;
        while ((b = fis.read()) != -1){
            fos.write(b);
        }

        fos.close();
        fis.close();

    }



    @Test
    public void methodTest(){
File file = new File( "C:\\Users\\23853\\Desktop\\a.txt");
      
        boolean flag = file.delete();
        Assert.assertEquals("delete方法出错了0",flag,true);
    }

    @After
    public void afterMethod() throws IOException {
        // 还原数据 即还原@Test中删除的a.txt
File f1 = new File("C:\\Users\\23853\\Desktop\\copy_a.txt");
      
File f2 = new File("C:\\Users\\23853\\Desktop\\a.txt");

        FileInputStream fis = new FileInputStream(f1);
        FileOutputStream fos = new FileOutputStream(f2);

        int b ;
        while ((b = fis.read()) != -1){
            fos.write(b);
        }

        fos.close();
        fis.close();

        // 删除备份数据
        f1.delete();
    }


}

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

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

相关文章

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的新能源停车场管理系统

开题报告 随着新能源汽车的快速普及和普及,新能源车辆的停车和充电需求也越来越大。传统的停车场管理系统无法满足这些新能源车辆的特殊需求,如充电桩分配、充电桩使用情况的实时监测等。因此,开发一种基于 Java 的新能源停车场管理系统成为…

计算机视觉之YOLO算法基本原理和应用场景

YOLO算法基本原理 整体流程 YOLO 将目标检测问题转化为一个回归问题。它将输入图像划分成多个网格单元,每个网格单元负责预测中心点落在该网格内的目标。对于每个网格单元,YOLO 预测多个边界框以及这些边界框中包含目标的类别概率。边界框通常由中心点坐…

Spring Cloud Stream 3.x+kafka 3.8整合

Spring Cloud Stream 3.xkafka 3.8整合,文末有完整项目链接 前言一、如何看官方文档(有深入了解需求的人)二、kafka的安装tar包安装docker安装 三、代码中集成创建一个测试topic:testproducer代码producer配置(配置的格式,上篇文章…

PHP中的HTTP请求:简化你的网络通信

在当今的网络应用开发中,PHP作为一种流行的服务器端脚本语言,经常需要与外部服务进行通信。这通常涉及到发送HTTP请求来获取或提交数据。幸运的是,PHP提供了多种方式来简化HTTP请求的过程,使得网络通信变得轻而易举。 PHP中的HTTP…

stm32h743 threadx + filex(SD卡读写) + CubeMX + CubeIDE

今天整了一下正点原子阿波罗h743的filex,按部就班的使用CubeMX去搭建环境,再用CubeIDE去编写程序,里面也有几个小坑,问题不大。 Step1. 创建CubeMX 首先设置RCC晶振,SYS为tim6 然后勾选sdmmc1 选择4bits,分频系数为4。这个分频系数选4对应一般的sd卡都可以用了,如果好…

单片机死机后在不破坏现场的情况下连接调试器进入调试模式

经常遇到程序在现场卡死了,但是这个时候没有连接调试器,不好找死机原因。 下面说下在程序卡死的时候,在不破坏死机现场的情况下,连接上调试器进行程序调试的方法。 把调试器连接电脑,打开keil做下面的配置&#xff0c…

Llama系列上新多模态!3.2版本开源超闭源,还和Arm联手搞了手机优化版,Meta首款多模态Llama 3.2开源!1B羊驼宝宝,跑在手机上了

Llama系列上新多模态!3.2版本开源超闭源,还和Arm联手搞了手机优化版,Meta首款多模态Llama 3.2开源!1B羊驼宝宝,跑在手机上了! 在多模态领域,开源模型也超闭源了! 就在刚刚结束的Met…

Web自动化Demo-PHP+Selenium

1.新建工程 打开PhpStorm新建工程如下&#xff1a; 打开终端输入如下命令安装selenium&#xff1a; composer require php-webdriver/webdriver 2.编写代码 <?php require vendor/autoload.php;use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver…

分治算法(8)_归并排序_翻转对

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 分治算法(8)_归并排序_翻转对 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 温…

云原生日志ELK( logstash安装部署)

logstash 介绍 LogStash由JRuby语言编写&#xff0c;基于消息&#xff08;message-based&#xff09;的简单架构&#xff0c;并运行在Java虚拟机 &#xff08;JVM&#xff09;上。不同于分离的代理端&#xff08;agent&#xff09;或主机端&#xff08;server&#xff09;&…

【python】:pycharm2024.2.2使用

参考链接&#xff1a; 文件连接&#xff1a; 方法1&#xff1a;临时有效&#xff0c;后期官方更新提示激活无效 输入激活码&#xff1a; X9MQ8M5LBM-eyJsaWNlbnNlSWQiOiJYOU1ROE01TEJNIiwibGljZW5zZWVOYW1lIjoiZ3VyZ2xlcyB0dW1ibGVzIiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVF…

Chainlit集成Dashscope实现语音交互网页对话AI应用

前言 本篇文章讲解和实战&#xff0c;如何使用Chainlit集成Dashscope实现语音交互网页对话AI应用。实现方案是对接阿里云提供的语音识别SenseVoice大模型接口和语音合成CosyVoice大模型接口使用。针对SenseVoice大模型和CosyVoice大模型&#xff0c;阿里巴巴在github提供的有开…

视频流媒体融合与视频监控汇聚管理系统集成方案

流媒体视频融合与汇聚管理系统可以实现对各类模块化服务进行统一管理和配置等操作&#xff0c;可实现对应用服务的整合、管理及共享&#xff0c;以标准接口的方式&#xff0c;业务平台及其他第三方业务平台可以方便地调用各类数据&#xff0c;具有开放性和可扩展性。在流媒体视…

opencascade鼠标拖拽框选功能

1.首先在OccView中添加用于显示矩形框的类 //! rubber rectangle for the mouse selection.Handle(AIS_RubberBand) mRectBand; 2.设置框选的属性 mRectBand new AIS_RubberBand(); //设置属性 mRectBand->SetLineType(Aspect_TOL_SOLID); //设置变宽线型为实线 mRe…

scanMiR:使用R语言预测 miRNA 结合位点

生信碱移 scanMiR 结合预测 scanMiR&#xff0c;一款R语言工具包&#xff0c;能够高效地扫描任何自定义序列上的典型和非典型miRNA结合位点&#xff0c;估计解离常数并预测聚合的转录物抑制。 最近&#xff0c;几项高通量研究试图阐明miRNA–mRNA靶向的生化决定因素。在一项发…

Unity 克隆Timeline并保留引用

Timeline的资源是.playable文件&#xff0c;简单的复制不会保留引用关系。 下面的脚本可以复制引用关系。 using System.Collections.Generic; using System.Linq; using System.Reflection; using UnityEngine; using UnityEngine.Playables; using UnityEngine.Timeline; u…

Node.js入门——fs、path模块、URL端口号、模块化导入导出、包、npm软件包管理器

Node.js入门 1.介绍 定义&#xff1a;跨平台的JS运行环境&#xff0c;使开发者可以搭建服务器端的JS应用程序作用&#xff1a;使用Node.Js编写服务器端代码Node.js是基于Chrome V8引擎进行封装&#xff0c;Node中没有BOM和DOM 2.fs模块-读写文件 定义&#xff1a;封装了与…

(03)python-opencv图像处理——图像的几何变换

前言 1、变换 2、缩放 3、平移变换 4、旋转 5、仿射变换 6、翻转 参考文献 前言 在本教程中&#xff1a; 你将会学到将不同的几何变换应用于图像&#xff0c;如平移、旋转、仿射变换等。你会学到如下函数&#xff1a;cv.getPerspectiveTransform 图像的几何变换是图像…

Ping32引领数据防泄漏新潮流:智能、高效、安全

在当今数字化迅猛发展的时代&#xff0c;企业面临着日益严峻的数据安全挑战。数据泄漏事件频发&#xff0c;不仅损害企业声誉&#xff0c;还可能导致巨额的经济损失。为此&#xff0c;Ping32以其创新的数据防泄漏解决方案&#xff0c;正在引领行业新潮流。其技术特点可概括为“…

017 平台属性[属性分组、规格参数、销售属性]

文章目录 获取指定分类的属性列表AttrController.javaAttrServiceImpl.java 获取属性分组所关联的所有属性AttrGroupControllerAttrServiceImpl.java 移除AttrGroupController.javaAttrServiceImpl.javaAttrAttrgroupRelationDao.javaAttrAttrgroupRelationDao.xml 获取属性分组…