Java(十四)----Junit测试
1.1 Junit是什么
Junit是Java语言编写的第三方单元测试框架
1.2 单元测试概念
单元:在Java中,一个类就是一个单元
单元测试:程序猿编写的一小段代码,用来对某个类中的某个方法进行功能测试或业务逻辑测试。
1.3 Junit单元测试框架的作用
用来对类中的方法功能进行有目的的测试,以保证程序的正确性和稳定性。
能够让方法独立运行起来。
1.4 Junit单元测试框架的使用步骤
编写业务类,在业务类中编写业务方法。比如增删改查的方法
编写测试类,在测试类中编写测试方法,在测试方法中编写测试代码来测试。
测试类的命名规范:以Test开头,以业务类类名结尾,使用驼峰命名法
每一个单词首字母大写,称为大驼峰命名法,比如类名,接口名...
从第二单词开始首字母大写,称为小驼峰命名法,比如方法命名
比如业务类类名:ProductDao,那么测试类类名就应该叫:TestProductDao
测试方法的命名规则:以test开头,以业务方法名结尾
比如业务方法名为:save,那么测试方法名就应该叫:testSave
1.5 测试方法注意事项
必须是public修饰的,没有返回值,没有参数
必须使注解@Test修饰
1.6 如何运行测试方法
选中方法名 --> 右键 --> Run '测试方法名' 运行选中的测试方法
选中测试类类名 --> 右键 --> Run '测试类类名' 运行测试类中所有测试方法
选中模块名 --> 右键 --> Run 'All Tests' 运行模块中的所有测试类的所有测试方法
1.7 如何查看测试结果
绿色:表示测试通过
红色:表示测试失败,有问题
1.8 Junit常用注解(Junit4.xxxx版本)常用于初始化对象赋值
@Before:用来修饰方法,该方法会在每一个测试方法执行之前执行一次。
@After:用来修饰方法,该方法会在每一个测试方法执行之后执行一次。
@BeforeClass:用来静态修饰方法,该方法会在所有测试方法之前执行一次。
@AfterClass:用来静态修饰方法,该方法会在所有测试方法之后执行一次。
1.9 Junit常用注解(Junit5.xxxx版本)
- @BeforeEach:用来修饰方法,该方法会在每一个测试方法执行之前执行一次。
- @AfterEach:用来修饰方法,该方法会在每一个测试方法执行之后执行一次。
- @BeforeAll:用来静态修饰方法,该方法会在所有测试方法之前执行一次。
- @AfterAll:用来静态修饰方法,该方法会在所有测试方法之后执行一次。
1.10 Junit的使用
示例代码
/**业务类:实现加减乘除运算*/
public class Cacluate {/*业务方法1:求a和b之和*/public int sum(int a,int b){return a + b + 10;}/*业务方法2:求a和b之差*/public int sub(int a,int b){return a - b;}
}public class TestCacluate {static Cacluate c = null;@BeforeClass // 用来静态修饰方法,该方法会在所有测试方法之前执行一次。public static void init(){System.out.println("初始化操作");// 创建Cacluate对象c = new Cacluate();}@AfterClass // 用来静态修饰方法,该方法会在所有测试方法之后执行一次。public static void close(){System.out.println("释放资源");c = null;}/* @Before // 用来修饰方法,该方法会在每一个测试方法执行之前执行一次。public void init(){System.out.println("初始化操作");// 创建Cacluate对象c = new Cacluate();}@After // 用来修饰方法,该方法会在每一个测试方法执行之后执行一次。public void close(){System.out.println("释放资源");c = null;}*/@Testpublic void testSum(){int result = c.sum(1,1);/*断言:预习判断某个条件一定成立,如果条件不成立,则直接奔溃。assertEquals方法的参数(String message, double expected, double actual)message: 消息字符串expected: 期望值actual: 实际值*/// 如果期望值和实际值一致,则什么也不发生,否则会直接奔溃。Assert.assertEquals("期望值和实际值不一致",12,result);System.out.println(result);}@Testpublic void testSub(){// 创建Cacluate对象// Cacluate c = new Cacluate();int result = c.sub(1,1);// 如果期望值和实际值一致,则什么也不发生,否则会直接奔溃。Assert.assertEquals("期望值和实际值不一致",0,result);System.out.println(result);}
}
Java(十四)----Junit测试相关推荐
- 教妹学Java(十四):switch 语句详解
大家好,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员.本篇文章通过我和三妹对话的形式来谈一谈"switch 语句". 教妹学 Java,没见过这么有趣的标题吧?&q ...
- 【Visual C++】游戏开发笔记四十六 浅墨DirectX教程十四 模板测试与镜面特效专场
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8632184 作者:毛星云( ...
- java十四章带参方法课后_java14带参的方法
public class jh_01_如何使用带参数的方法31 { public static void main(String[] args) { // 创建对象 ZhaZhiJi zzj = ne ...
- java十四章简答_java各章节简答题
Java简答题第1章 1.Java语言的特点? 答:简单性.面向对象.分布式处理.健壮性.结构中立.安全性.可移植性.解释性.高性能.多线程.动态 2.Java程序的开发步骤 1)编写源文件.扩展名必 ...
- Python(十四)测试、调试和异常
1.测试stdout输出 写个测试来证明标准输出,会将文本打印到屏幕上面 使用unitest框架进行测试 # mymodule.pydef urlprint(protocol, host, domai ...
- java面试四 运算符测试
1 根据根除的代码,选出正确的答案 public class Test { public static void main(String[] args) { int i = 0 ; int ...
- 假赋值java_Java十四天零基础入门-Java赋值运算符
不闲聊!!!不扯淡!!!小UP只分享Java相关的资源干货 Java赋值运算符 赋值运算符目前也是只需要掌握=.+=.-=.*=./=.%=,其它和二进制相关的内容也是到后面遇到的时候再详细学习.赋值 ...
- Java从键盘输入n行字符串_Java十四天零基础入门-Java布尔类型
不闲聊!!!不扯淡!!!小UP只分享Java相关的资源干货 Java布尔类型 在Java语言中布尔类型的值只包括true和false,没有其他值,不包括1和0,布尔类型的数据在开发中主要使用在逻辑判断 ...
- java短除法获取二进制_Java十四天零基础入门-Java的数据类型介绍
不闲聊!!!不扯淡!!!小UP只分享Java相关的资源干货 本章节目标: 理解数据类型的作用.Java中包括哪些数据类型?常见的八种基本数据类型都有哪些?会用八种基本数据类型声明变量?什么是二进制?原 ...
最新文章
- pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法
- 对面向对象设计原则的总结
- 十、Docker快速搭建Elastic Stack(下篇)
- Bigtable:一个分布式的结构化数据存储系统(转)
- java 任意数平均值_【编程题】通过键盘输入三个任意的数字,计算三个值的平均值,并输出结果。...
- 在Android Studio中将Android工程变为Library使用
- jsp 页面实现增减行
- 没有它,我们寸步难行——LBS的渊源与实践
- Linux下通过WebShell反弹Shell的技巧
- 水晶报表中图片不显示解决方案
- 转:Maven通俗讲解
- AVOD-代码理解系列(三)
- Java开源博客源码完整汇总(持续更新)
- 计算机指纹驱动程序,联想笔记本指纹识别驱动安装教程【详解】
- “新产业50人论坛”之清华龙桂鲁教授:量子信息与创新发展
- 智能柜怎么与Android通信,快递智能柜Android系统该何去何从
- linux程序设计x11,让Linux支持X11 Forwarding
- weiphp mysql5.1_weiphp微信公众平台 v4.0 beta
- jsp/servlet过滤器和struts2拦截器的有什么区别
- Differentially Private Deep Learning with Iterative Gradient Descent Optimization