JUnit单元测试
Junit是一个Java语言的单元测试框架
Junit单元测试的好处
- 可以书写一些列的测试方法,对项目的所有的接口或者方法进行单元测试
- 启动后,自动化的测试
- 只需需要查看最后的结果
- 每个单元测试的用例相对独立,有Junit启动
- 添加,删除,屏蔽方法的测试
jar包
如果引入的是第三方的插件,xxx.jar的文件。
首先要把这个文件导入我们的工程目录下
凄恻,要添加到工程的以来目录中
测试方法
- 不能有返回自豪
- 不能有参数列表
- 必须有Test注解
Junit断言
Junit的所有断言都包含Assert类中
这个类提供了很多有用的断言来编写测试用例
只有失效的断言才会被记录
asserEquals:检查两个变量或灯饰是否平衡
assertTrue:检查条件是否为真
assertFalse:检查田间是否为家
assertNot Null:检查对象是否不为空
assertNull:检查对象是否为空
Before:在测试方法之前执行
After:在测试方法之后执行
命名规范:
单元测试类的命名,被测试类的类名,Test
测试方法的命名,test + 被测试方法的方法名
Junit4、Junit5,建议使用4
测试ArrayList与LinkedList
测试尾插效率(尾插100w个元素)
package com.jsoft.junit;
import org.junit.Test;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class Demo1 {
// 测试ArrayList尾插元素效率
@Test
public void testArrayList() {
long begin = System.currentTimeMillis();
List<Integer> list = new ArrayList<>(1000000);
long end = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
list.add(i);
}
System.out.println("耗时:" + (end - begin) + "ms");
}
// 测试LinkedList尾插元素效率
@Test
public void testLinkedList() {
List<Integer> list = new LinkedList<>();
long begin = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
list.add(i);
}
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - begin) + "ms");
}
}
我们测试三次结果,取平均值
ArrayList耗时:1ms (1ms、1ms、1ms)
LinkedList耗时:108ms (115ms、105ms、103ms)
测试随机检索效率(对10w个数据随机检索10w次)
package com.jsoft.junit;
import org.junit.Test;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
public class Demo1 {
// 测试ArrayList随机检索元素效率
@Test
public void testArrayList() {
// itit
Random r = new Random();
List<Integer> list = new ArrayList<>(100000);
for (int i = 0; i < 100000; i++) {
list.add(i);
}
// begin
long begin = System.currentTimeMillis();
for (int i = 0; i < list.size(); i++) {
list.get(r.nextInt(list.size()));
}
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - begin) + "ms");
}
// 测试LinkedList随机检索元素效率
@Test
public void testLinkedList() {
// itit
Random r = new Random();
List<Integer> list = new LinkedList<>();
for (int i = 0; i < 100000; i++) {
list.add(i);
}
// begin
long begin = System.currentTimeMillis();
for (int i = 0; i < list.size(); i++) {
list.get(r.nextInt(list.size()));
}
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - begin) + "ms");
}
}
我们测试三次结果,取平均值
ArrayList耗时:ms (6ms、5ms、3ms)
LinkedList耗时:ms (5190ms、5158ms、5232ms)