Skip to content
小鹏的Notes
Main Navigation 首页 笔记汇总
📱 3D翻盖手机
🎬 Siena Film
✨ 设计动效
🎲 疯狂 3D 游戏库
Github仓库 留言板 说说
黑马八股
小林Coding
导航网站
电脑截屏工具Snipaste
PDF工具
编辑图片
ip解析
电脑屏幕检测
文件格式转换

深浅模式

Sidebar Navigation

自我介绍

👨「代码炼金术士」

🌍「诗的浪漫极客」

Java基础学习

Java基础知识

Java集合

IO流

多线程

File文件

异常

网络编程

注解

Stream流

log日志

XML

反射和动态代理

方法引用

单元测试

类加载器

Java后端

JavaWeb SpringBoot 学习

苍穹外卖

微服务

SpringCloud学习

RabbitMQ

Nacos源码分析

Sentinel源码分析

Linux学习

Linux学习

Git学习

Git学习

Docker学习

Docker学习

中间件

ElasticSearch

RabbitMQ

数据库学习

Mysql学习-汇总

Mysql学习-基础篇

Mysql学习-高级篇

Mysql学习-运维篇

中间件学习

MybatisPlus学习

待续...

前端学习

Vue学习

HTML+CSS+移动端

目录

单元测试 ​

更新: 2025/4/9 字数: 0 字 时长: 0 分钟

一、单元测试概述 ​

更新: 2025/4/9 字数: 0 字 时长: 0 分钟

1、单元测试 ​

image-20250322154628559

2、JUnit单元测试框架 ​

image-20250322154705630

3、小结 ​

image-20250322154728105

二、单元测试的快速入门 ​

更新: 2025/4/9 字数: 0 字 时长: 0 分钟

image-20250322154932917

image-20250322155213525

java
    /**
       测试方法
       注意点:
            1、必须是公开的,无参数 无返回值的方法
            2、测试方法必须使用@Test注解标记。
     */
    @Test
    public void testLoginName(){
        UserService userService = new UserService();
        String rs = userService.loginName("admin","123");

        // 进行预期结果的正确性测试:断言。
        //参数一:信息
        //参数二:预测结果
        //参数三:实际结果
        Assert.assertEquals("您的登录业务可能出现问题", "登录成功", rs );
    }

三、Junit常用注解 ​

更新: 2025/4/9 字数: 0 字 时长: 0 分钟

image-20250322155308471

1、断言-assert ​

image-20250322155914821

image-20250322155935944

2、测试代码不能污染源数据 ​

解析 ​

image-20250322160438657

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

利用@Before注解-先备份文件

image-20250322160526995

@Test进行测试-执行删除文件的逻辑

image-20250322160704217

@After-还原数据

image-20250322160745100

示例代码 ​

java
public class JunitDemo3 {
    //在实际开发中,真正完整的单元测试该怎么写?
    //前提:
    //以后在工作的时候,测试代码不能污染原数据。(修改,篡改)
    //1.利用Before去对数据做一个初始化的动作
    //2.利用Test真正的去测试方法
    //3.利用After去还原数据
    
    //需求:测试File类中的delete方法是否书写正确???
    @Before
    public void beforemethod() throws IOException {
        //先备份
        File src = new File("C:\\Users\\moon\\Desktop\\a.txt");
        File dest = new File("C:\\Users\\moon\\Desktop\\copy.txt");

        FileInputStream fis = new FileInputStream(src);
        FileOutputStream fos = new FileOutputStream(dest);
        int b;
        while((b = fis.read()) != -1){
            fos.write(b);
        }
        fos.close();
        fis.close();
    }

    //作为一个标准的测试人员,运行完单元测试之后,不能污染原数据
    //需要达到下面两个要求:
    //1.得到结果
    //2.a.txt还在而且其他的备份文件消失
    @Test
    public void method(){
        File file = new File("C:\\Users\\moon\\Desktop\\a.txt");
        boolean delete = file.delete();

        //检查a.txt是否存在
        boolean exists = file.exists();

        //只有同时满足了下面所有的断言,才表示delete方法编写正确
        Assert.assertEquals("delete方法出错了",delete,true);
        Assert.assertEquals("delete方法出错了",exists,false);
    }


    @After
    public void aftermethod() throws IOException {
        //还要对a.txt做一个还原
        File src = new File("C:\\Users\\moon\\Desktop\\copy.txt");
        File dest = new File("C:\\Users\\moon\\Desktop\\a.txt");

        FileInputStream fis = new FileInputStream(src);
        FileOutputStream fos = new FileOutputStream(dest);
        int b;
        while((b = fis.read()) != -1){
            fos.write(b);
        }
        fos.close();
        fis.close();

        //备份数据要删除
        src.delete();

    }
}

作业: ​

​ 测试Properties类中的store方法是否书写正确?

开发心得:

1.Before 准备数据

2.Test 测试方法

3.After 还原

Before

java
准备数据
1.创建Properties的对象
2.put数据到集合当中
//只不过在下面的方法中,我们也需要用到Properties的对象,所以写完之后要挪到成员位置

Test

java
调用store方法,保存数据到本地文件

断言1:
	判断当前文件是否存在
断言2:
	文件的大小一定是大于0
断言3:
	再次读取文件中的数据,判断是否跟集合中一致

结论:
	如果所有的断言都通过了,表示store方法是正确的

After

java
把本地文件给删除

扩展点 ​

在单元测试中,相对路径是相对当前模块而言的。

代码示例:

java
File file = new File("aweihaoshuai.txt");
file.createNewFile();
//此时是把aweihaoshuai.txt这个文件新建到模块中了。

3、案例练习 ​

业务方法

java
package com.pyw.a81junit;

/**
   业务方法
 */
public class UserService {
    public String loginName(String loginName , String passWord){
        if("admin".equals(loginName) && "123456".equals(passWord)){
            return "登录成功";
        }else {
            return "用户名或者密码有问题";
        }
    }

    public void selectNames(){
        System.out.println(10/2);
        System.out.println("查询全部用户名称成功~~");
    }
}

测试类

java
package com.pyw.a81junit;


import org.junit.*;

/**
   测试类
 */
public class TestUserService {

    // 修饰实例方法的

    //每个测试方法运行之前都执行一次
    @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 testLoginName(){
        UserService userService = new UserService();
        String rs = userService.loginName("admin","123");

        // 进行预期结果的正确性测试:断言。
        //参数一:信息
        //参数二:预测结果
        //参数三:实际结果
        Assert.assertEquals("您的登录业务可能出现问题", "登录成功", rs );
    }

    @Test
    public void testSelectNames(){
        UserService userService = new UserService();
        userService.selectNames();
    }
}

4、扩展点-相对路径 ​

image-20250322161021755

image-20250322161038698

最后更新于:

Pager
上一篇 方法引用
下一篇 类加载器

Released under the MIT License.

Copyright © 2025 渝ICP备2025054279号