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

文章目录

单元测试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 + 回车,再来导入。

注意点:

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

如下代码:

java 复制代码
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

java 复制代码
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 用来修饰实列方法,该方法会在所有测试方法之后执行一次
  • 开始执行的方法:初始化资源
  • 执行完之后的方法:释放资源
java 复制代码
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();
    }


}
相关推荐
身如柳絮随风扬4 小时前
Java中的CAS机制详解
java·开发语言
风筝在晴天搁浅5 小时前
hot100 78.子集
java·算法
故事和你916 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
Configure-Handler7 小时前
buildroot System configuration
java·服务器·数据库
:Concerto7 小时前
JavaSE 注解
java·开发语言·sprint
电商API_180079052478 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫
一点程序8 小时前
基于SpringBoot的选课调查系统
java·spring boot·后端·选课调查系统
C雨后彩虹8 小时前
计算疫情扩散时间
java·数据结构·算法·华为·面试
2601_949809598 小时前
flutter_for_openharmony家庭相册app实战+我的Tab实现
java·javascript·flutter
vx_BS813309 小时前
【直接可用源码免费送】计算机毕业设计精选项目03574基于Python的网上商城管理系统设计与实现:Java/PHP/Python/C#小程序、单片机、成品+文档源码支持定制
java·python·课程设计