2022-08-08 吉林化工学院 第五组 韩嘉宁(Junity单元测试 流 File类)
时间:2022-08-10
本文章向大家介绍2022-08-08 吉林化工学院 第五组 韩嘉宁(Junity单元测试 流 File类),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
JUnit单元测试
目录
一、JUnit(Java语言单元测试框架)
1. JUnit单元测试好处:
- 可以书写一些测试方法,对项目的接口或者方法进行单元测试
- 启动后,自动化的测试
- 只需要查看最后的结果
- 每个单元测试的用例相对独立,由JUnit启动
- 添加,删除,屏蔽测试方法
2. jar包
若需引入第三方插件,xxx.jar的文件
首先将文件导入该工程目录下
其次要将其添加至工程依赖目录下
3. 测试方法
不能有返回值
不能有参数列表
必须有Test注解
4. JUnit断言
- JUnit的所有断言都包含在Assert类中
- 这个类提供了许多断言来编写测试用例
- 只有失败的断言才会被记录
- 断言不成功会抛异常,帮我们去预判结果,即使程序正常运行但是结果不正确,也会以失败结束
5. Assert中的常用方法
assertEquals:检查两个变量是否相等 |
assertTrue:检查条件是否为真 |
assertFalse:检查条件是否为假 |
assertNotNull:检查对象是否不为空 |
assertNull:检查对象是否为空 |
6. JUnit注解
1.Test
2.Before:在测试方法执行之前执行的方法
3.After
测试结果:
7. 命名规范
- 单元测试类的命名:被测试类的类名 + Test
- 测试方法的命名: test + 被测试方法的方法名
JDK8新增
1. stream编程 |
2. 容器对象功能的增强 |
3. 我们可以将流看做流水线,这个流水线是处理数据的流水线 |
4. 当我们使用一个流的时候,通常包括三个步骤: |
(1) 获取一个数据源 |
(2) 执行操作获取想要的结果 |
(3) 每次操作,获取原有的流对象不改变,返回一个新的流对象 |
5. 函数式接口——必须会 |
6. 箭头函数(lambda表达式)——必须会【不是Java特有的】 |
7. Optional类 |
8. 断言 |
Stream 特性
- Stream不存储数据,一般会输出结果
- Stream不会改变数据源,通常会生成新的一个集合
- Stream具有延迟执行的特性,只有调用中断操作时中间操作才会执行。
// 双冒号语法---方法引用
// 遍历
integers.stream().forEach(System.out::println);
integers.forEach(System.out::println);
// 查找
System.out.println(integers.stream().findFirst());
// 如果没有并行 Any也是第一个
System.out.println(integers.stream().findAny());
// 匹配
// 任意匹配
boolean b = list.stream().anyMatch(it -> it.getAge() > 35);
System.out.println(b);
// 全部匹配
b = list.stream().allMatch(it -> it.getAge() > 35);
System.out.println(b);
// 排序 sorted
// 自然排序
System.out.println();
List<String> collect = list.stream().sorted(
Comparator.comparing(Person::getSal)).
map(Person::getName).
collect(Collectors.toList());
System.out.println(collect);
!!!!过滤筛选
二、IO流
Java I0流---对于文件的操作
Input:把数据从物理内存加载到运行内存。(读文件) Output:把数据从运行内存写到物理内存。(写文件)
java.io包下的类
计算机的输入输出都是通过二进制完成。
-
0和1
-
工具类:File操作文件得类
文件的路径:
-
正斜杠:左斜杠,/
-
反斜杠:右斜杠,\
-
在Unix/Linux,路径的分隔采用正斜杠 /
-
在Window中,路径分隔采用反斜杠 \
-
在Java中【反斜杠】代表转义
-
在File类中,定义了路径分隔符的常量
-
绝对路径和相对路径 绝对路径:以盘符开头 相对路径:不以盘符开头
在File中定义分隔符的常量,自动识别操作系统。
File类
File类的构造器(3种)
File file = new File("C:\\Users\\Administrator\\Documents");
File file1 = new File("C:\\Users\\Administrator\\Documents","aaa");
File file2 = new File(file,"aaa");
System.out.println("file"+file);
System.out.println("file1"+file1);
System.out.println("file2"+file2);
文件的操作
新建文件是不会覆盖已有文件
@Test
public void test03(){
File file = new File("c:\\ a");
File file1 = new File("c:\\ a\\c\\d");
// 文件夹创建
boolean mkdir = file.mkdir();
// 多级文件夹创建
boolean mkdirs = file1.mkdirs();
System.out.println("大"+mkdirs);
System.out.println("都是"+mkdir);
}
@Test
public void test02(){
File file = new File("C:\\aaa.txt");
// 文件删除
// file类的删除是不走回收站的
boolean delete = file.delete();
System.out.println(delete);
}
@Test
public void test01(){
File file = new File("C:\\aaa.txt");
try {
// 文件创建(不创建文件夹)
file.createNewFile();
System.out.println("文件创建成功");
} catch (IOException e) {
e.printStackTrace();
}
}
- 文件删除(delete()不走回收站)
- createNewFile() :创建文件,不创建文件夹
面试题
1.Hashtable 与 ConcurrentHashMap性能测试
// 开辟50个线程--每个线程向集合中添加100000个元素 测试两个类所需的时间
@Test
public void hashtableTest() throws InterruptedException {
final Map<Integer, Integer> map =new Hashtable<>(9000000);
System.out.println("开始测试hashtable-------------");
long l = System.currentTimeMillis();
for (int i = 0; i < 50; i++) {
int j=i;
Thread thread = new Thread(()->{
for (int i1 = 0; i1 < 1000000; i1++) {
map.put(j*i1,i1);
}
});
thread.start();
}
long l1 = System.currentTimeMillis();
System.out.println("hashtable执行了:"+(l1-l));
}
@Test
public void hashmapTest() throws InterruptedException {
final Map<Integer, Integer> map =new ConcurrentHashMap<>(5000000);
System.out.println("开始测试ConcurrentHashMap-------------");
long l = System.currentTimeMillis();
for (int i = 0; i < 50; i++) {
final int j=i;
Thread thread = new Thread(()->{
for (int i1 = 0; i1 < 1000000; i1++) {
map.put(j*i1,i1);
}
// 记录添加数据的次数
});
thread.start();
}
long l1 = System.currentTimeMillis();
System.out.println("hashtable执行了:"+(l1-l));
}
2.ArrayList 和 LinkedList性能测试
1. 数组查询快插入慢,链表插入快查询慢 |
2. 尾插数组快,链表慢 |
3. 数组遍历快 |
4. 头插链表快,数组慢 |
5. 随机删除建议用LinkedList(要过滤) |
知识思维导图如下
原文地址:https://www.cnblogs.com/WorkerHevien/p/16564412.html
- 【学术】机器学习优化函数的直观介绍
- 基于达尔文进化论的遗传算法,还能帮你破解同事的密码?| 附代码
- Vue + Node + Mongodb 开发一个完整博客流程
- Golang中用interface{}接收任何参数与强转
- Machine Box创始人教你快速建立一个ML图像分类器
- 【图解】Web前端实现类似Excel的电子表格
- 一个简单而强大的深度学习库—PyTorch
- CSS实现水平|垂直居中漫谈
- 深度学习开源框架PaddlePaddle发布新版API,简化深度学习编程
- HTML5游戏引擎深度测评
- 使用NumPy介绍期望值,方差和协方差
- Cleaver快速制作网页PPT
- 【学术】马尔可夫链的详细介绍及其工作原理
- 想把自拍背景改成马尔代夫?手把手教你用深度学习分分钟做到
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 算法篇:树之转换为二叉搜索树
- 算法篇:树之倒数k个节点
- 揭开链表的真面目
- Coder,我怀疑你并不会枚举
- 掌握坐标轴的log转换
- 连通域的原理与Python实现
- 涨见识!Java String转int还有这种写法
- RTSP拉流协议视频平台EasyNVR能够接入多少路视频直播流?
- 安装allure后执行命令后报错 INTERNALERROR> AttributeError: module 'pytest' has no attribute 'allure'
- 太好玩了,爬虫、部署API、加小程序,一条龙玩转知乎热榜
- SwiftUI:与 MapKit 协调器通信
- SwiftUI:集成 MapKit
- Seurat教程 || 分析Cell Hashing数据
- 图数据库之TinkerPop Provider
- SwiftUI:用枚举切换视图状