您的位置:首页 > 娱乐 > 八卦 > 【Java】Junit的使用

【Java】Junit的使用

2024/10/5 17:26:10 来源:https://blog.csdn.net/m0_66070037/article/details/141402914  浏览:    关键词:【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 进行依赖替换以简化测试。
  • 持续集成:定期运行测试,确保修改后功能正常。

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


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

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com