当前位置: 首页 > news >正文

【Java】Junit的使用

Java系列文章目录

补充内容 Windows通过SSH连接Linux
第一章 Linux基本命令的学习与Linux历史


文章目录

  • Java系列文章目录
  • 一、前言
  • 二、学习内容:
  • 三、问题描述
  • 四、解决方案:
    • 4.1 Junit测试方法的使用
    • 4.2 测试规范
  • 五、总结

一、前言

  • 学习测试Junit
  • Mock后面补充

二、学习内容:

  • 测试的方法与条件

三、问题描述

  • 对简单逻辑代码的测试

四、解决方案:

4.1 Junit测试方法的使用

  • 写一个简单的加法但是里面实际上是乘法

🌟 Junit适合测试简单的没有依赖的类

package org.example;public class SimpleExample {public int add (int numberA,int numberB){return numberA * numberB;}
}
  • 测试类的测试用例加上注解@Test

🌟 其他注解后续补充这个比较重要先记录

使用断言来进行测试

package org.example;import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;
//        assertNotEquals(5,simpleExample.add(2,2));
//        assertTrue(4==simpleExample.add(2,2));
//        assertFalse(5==simpleExample.add(2,2));
//        assertNotNull(simpleExample);
//        assertNull(simpleExample.add(2,2));
//        assertSame(simpleExample.add(2,2),simpleExample.add(2,2));
//        assertNotSame(simpleExample.add(2,2),simpleExample.add(2,2));class SimpleExampleTest {@Testvoid twoPlusTwoShouldEqualFour(){SimpleExample simpleExample = new SimpleExample();assertEquals(4,simpleExample.add(2,2));}@Testvoid threePlusSevenShouldEqualTen(){SimpleExample simpleExample = new SimpleExample();assertEquals(10,simpleExample.add(3,7));}}
  • 遇到异常会出现如下情况

在这里插入图片描述

4.2 测试规范

🌟 独立性:确保测试方法之间相互独立,不依赖外部状态。
🌟 粒度控制:每个测试方法测试一个特定功能。

每个方法都测试一小部分功能:

package org.example;import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;class GraderTest {@Testvoid testGradeA() {Grader grader = new Grader();char letterGrade = grader.determineLetterGrade(100);assertEquals('A', letterGrade);}@Testvoid testGradeB() {Grader grader = new Grader();char letterGrade = grader.determineLetterGrade(80);assertEquals('B', letterGrade);}@Testvoid testGradeC() {Grader grader = new Grader();char letterGrade = grader.determineLetterGrade(70);assertEquals('C', letterGrade);}@Testvoid testGradeD() {Grader grader = new Grader();char letterGrade = grader.determineLetterGrade(60);assertEquals('D', letterGrade);}@Testvoid testGradeF() {Grader grader = new Grader();char letterGrade = grader.determineLetterGrade(50);assertEquals('F', letterGrade);}@Testvoid testGradeOutOfRange() {Grader grader = new Grader();//如果抛出异常就是对的System.out.println(assertThrows(IllegalArgumentException.class, () -> grader.determineLetterGrade(-1)));}
}
  • 写一个简单的分数判断逻辑

🌟 每个测试方法测试一个特定功能。我们可以把下面代码的else去掉

package org.example;public class Grader {public char determineLetterGrade(int numberGrade) {if (numberGrade < 0 || numberGrade > 100) {throw new IllegalArgumentException("Grade not in range");} else if (numberGrade >= 90) {return 'A';} else if (numberGrade >= 80) {return 'B';} else if (numberGrade >= 70) {return 'C';} else if (numberGrade >= 60) {return 'D';} else {return 'F';}}
}

五、总结

  • 命名规范:使用清晰且具有描述性的类名和方法名。
  • 注解使用:合理使用 @Test、@Before、@After 等注解。
  • 断言:用适当的断言方法(如 assertEquals())验证预期结果。
  • 异常测试:有效捕获和验证异常。
  • 独立性:确保测试方法之间相互独立,不依赖外部状态。
  • 粒度控制:每个测试方法测试一个特定功能。
  • 可读性:代码应清晰简洁,易于维护。
  • 合理依赖:使用 Mock 进行依赖替换以简化测试。
  • 持续集成:定期运行测试,确保修改后功能正常。

(后续有遇到问题再添加)


声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。

在这里插入图片描述


http://www.mrgr.cn/news/3343.html

相关文章:

  • MyBatis源码系列3(解析配置文件,创建SqlSessionFactory对象)
  • 靶机:DC-4
  • 设计模式系列:策略模式的设计与实践
  • C#用户控件usercontrol中的子控件事件及属性的传递
  • 有哪些方法可以查看服务器是否配置了RAID?
  • IP in IP 协议
  • Qt QTextEdit调用append数据重复的问题
  • M-Fedya and Array(cf1793)
  • avalonia学习之按钮
  • Python爬虫图片:从入门到精通
  • startData
  • RabbitMQ与ElasticSearch面试
  • 5IUX极简主页搜索源码/自定义你的浏览器主页
  • Rust: 技术介绍
  • 【设计模式反模式:UML图示有那些常见误用?】
  • 计算机毕业设计选题推荐-养老院管理系统-Java/Python项目实战
  • 用户体验的优化:观测云在用户行为分析中的应用
  • wireshark启动之后找不到本地接口问题
  • 智慧楼宇公厕系统小程序,提高卫生间管理使用效率
  • Golang | Leetcode Golang题解之第343题整数拆分