JUnit单元测试&简版学生管理系统

JUnit的做用是:在庞大的程序项目中,要测试一个功能模块,不须要将整个庞大的项目都运行,只须要将须要测试的功能块进行JUnit测试就行java

很是的方便,也很清晰,提升的开发的速度。mysql

目前广泛使用的JUnit版本为JUnit4sql

JUnit的格式为:@Test  数据库

能够利用快速修复键(ctrl+1),来添加JUnit4的jar包api

在有多个JUnit测试存在时,直接右键运行会将 所有都执行,若是只须要测试一个功能,就先左键选中这个代码块,再右键运行。服务器

JUnit单元测试的要求是:dom

权限修饰符必须是public  这是由于每每JUnit测试代码会被写在test包下,因此修饰符要为public,负责没法访问jvm

返回值类型为空。ide

没有参数工具

 

正规的单元测试
1 》 在当前要测试的类上右键,选择 new-- 》 junit test case
2 》 单元测试方法的命名:
test+ 要测试的方法的名称

这是新建JUnit测试的步骤

随机访问流
1.RandomAccessFile :不属于 IO 流体系的 IO 流,直接继承 Object 类
用于 随机访问文件的读写。
2. 构造方法:
RandomAccessFile(File file, String mode) /RandomAccessFile(String name, String mode)
注意:
mode: 一共 4 种,经常使用两种 r 表示只读 ( 输入流 ) rw 表示读写 ( 输入 / 出流 )

代码示例:

 1 public class 随机访问流 {  2 public static void main(String[] args) throws IOException {  3 RandomAccessFile raf=new RandomAccessFile(new File("1.txt"), "rw");  4 // 写 的方法
 5 /*raf.write("abc".getBytes());  6 raf.write("def".getBytes());  7 byte[] b=new byte[1024];  8 int count = raf.read(b);  9 System.out.println(new String(b,0,count));*/
10 // 随机插入 seek(pointer) 设置文件指针位置。
11 raf.seek(1); 12 raf.write(" 咱们 ".getBytes()); 13 //getFilePointer 获取指针当前位置。
14 System.out.println(raf.getFilePointer()); 15 raf.close(); 16 } 17 }

属性集:

1.Properties : 属性集,该属性集中由键与值组成,而且都是字符串。继承 HashTable ,属于 Map 集合的一支

2. 构造方法:
Properties()
3. 经常使用方法:
1 》 load( 输入流 ) 从输入流中读取属性集
2 》 getProperty(String key) 经过 key 获取值
4. 配置文件。 -- 》 .properties--- 》 xml

代码示例:

 1 public class 属性集 {  2 public static void main(String[] args) throws IOException {  3 // 数据库? mysql mysql -- 》登陆 mysql -uroot -p123
 4 /*String username="root";  5 String psw="123";*/
 6 // 建立属性集对象  7 //=========== 如下要求必会
 8 Properties prp=new Properties();  9 /*System.out.println(prp); 10 prp.load(new FileInputStream(new File("Jdbc.properties"))); 11 System.out.println(prp); 12 String name = prp.getProperty("username"); 13 System.out.println(name);*/
14 //=========== 以上必会
15 prp.put("username", "root"); 16 prp.put("psw", "123"); 17 prp.store(new FileWriter(new File("3.properties")), " 这是一个 java 的文件 "); 18 } 19 }

 

 版本序列号就比如是一个模具。

 

 

下面是一个简版的学生管理系统:

Student类

 

 1 package com.ujiuye.studentmanager;  2 import java.io.Serializable;  3 
 4 public class Student implements Serializable{  5     /**
 6  * 序列化版本号  7      */
 8     private static final long serialVersionUID = -9027709965061074374L;  9     private String name; 10     private int age; 11     private String stuNo; 12     public String getName() { 13         return name; 14  } 15     public void setName(String name) { 16         this.name = name; 17  } 18     public int getAge() { 19         return age; 20  } 21     public void setAge(int age) { 22         this.age = age; 23  } 24     public String getStuNo() { 25         return stuNo; 26  } 27     public void setStuNo(String stuNo) { 28         this.stuNo = stuNo; 29  } 30     public Student() { 31         super(); 32         // TODO Auto-generated constructor stub
33  } 34     public Student(String name, int age, String stuNo) { 35         super(); 36         this.name = name; 37         this.age = age; 38         this.stuNo = stuNo; 39  } 40  @Override 41     public String toString() { 42         return "学生 :姓名 " + name + ", 年龄 " + age + ", 学号 " + stuNo ; 43  } 44 }

 

服务器端负责增删改查的代码

StudnetDao

 1 package com.ujiuye.studentmanager;  2 
 3 import java.io.IOException;  4 import java.util.ArrayList;  5 import java.util.Iterator;  6 import java.util.Scanner;  7 
 8 import com.ujiuye.studentmanager.util.IOUtils;  9 
 10 
 11 public class StudentDAO {  12       /**
 13  * 思路:  14  * ① 输入要添加的姓名 年龄 学号  15  * ② 首先从文件中读取集合,再添加学生对象  16  * ③ 将该集合写入到文件中。  17  * @throws IOException  18      */
 19     public  void add(String fileName) throws IOException {  20           Scanner sc=new Scanner(System.in);  21           System.out.println("请输入要添加的学生的姓名:");  22           String name = sc.next();  23           System.out.println("请输入要添加的学生的年龄:");  24           int age = sc.nextInt();  25           System.out.println("请输入要添加的学生的学号:");  26           String stuNo = sc.next();  27           //读取
 28           ArrayList<Student> list = IOUtils.getStudents(fileName);  29           //添加用户输入的学生对象
 30           list.add(new Student(name, age, stuNo));  31           //写入文件,再显示
 32  IOUtils.writeToList(list, fileName);  33           System.out.println("添加成功");  34  query(fileName);  35  }  36       public  void delete(String fileName) throws IOException {  37           Scanner sc=new Scanner(System.in);  38           System.out.println("请输入要删除学生的学号:");  39           String stuNo = sc.next();  40           //查询学号 ==》直接删除,不判断是否存在。  41           //遍历集合 删除学生 ==》文件中读取  42           //建议删除时 使用迭代器
 43           ArrayList<Student> list = IOUtils.getStudents(fileName);  44           //判断该集合是否存在元素
 45           if(!list.isEmpty()) {  46               Iterator<Student> it = list.iterator();  47               while(it.hasNext()) {  48                   Student st = it.next();  49                   if(st.getStuNo().equals(stuNo)) {  50                       //删除
 51  it.remove();  52  }  53  }  54  }  55           //写入文件,并显示
 56  IOUtils.writeToList(list, fileName);  57           System.out.println("删除成功");  58  query(fileName);  59  }  60       public  void update(String fileName) throws IOException {  61           Scanner sc=new Scanner(System.in);  62           System.out.println("请输入要修改的学生的学号:");  63           String stuNo = sc.next();  64           //遍历集合,看学号是否存在  65           //读取
 66           ArrayList<Student> list = IOUtils.getStudents(fileName);  67           //标识位 
 68           boolean flag=true;  69           if(!list.isEmpty()) {  70               Iterator<Student> it = list.iterator();  71               while(it.hasNext()) {  72                   Student st = it.next();  73                   if(st.getStuNo().equals(stuNo)) {  74                       System.out.println("请输入要修改的学生的姓名:");  75                       String name = sc.next();  76                       System.out.println("请输入要修改的学生的年龄:");  77                       int age = sc.nextInt();  78  st.setName(name);  79  st.setAge(age);  80                       flag=false;  81                     //写文件 再显示
 82  IOUtils.writeToList(list, fileName);  83                          System.out.println("修改为功");  84  query(fileName);  85                          break;// 找到一个学号 就修改
 86  }  87  }  88  }  89          if(flag) {  90              System.out.println("没有该学号存在");  91  }  92         
 93  }  94       //查询  95       //思路: 读取文件中的集合,遍历 ,前提,判断集合中是否存在元素,没有 ,提示添加,而后再查询。
 96       public  void query(String fileName) throws IOException {  97           //读取的方法 工具类
 98           ArrayList<Student> list=IOUtils.getStudents(fileName);  99           //判断
100           if(list.isEmpty()) { 101               System.out.println("没有数据,请先添加再查询"); 102           }else { 103               //遍历
104               Iterator<Student> it = list.iterator(); 105               while(it.hasNext()) { 106  System.out.println(it.next()); 107  } 108  } 109  } 110 }

 

 

主方法:

 1 package com.ujiuye.studentmanager;  2 
 3 import java.util.Scanner;  4 
 5 
 6 public class Test_Main {  7     public static void main(String[] args) {  8         Scanner sc=new Scanner(System.in);  9         //建立StudentDAO类的对象
10         StudentDAO std=new StudentDAO(); 11         try { 12             while (true) { 13                 System.out.println("========欢迎光临学生管理系统============="); 14                 System.out.println("添加学生 请按1 ,删除学生 请按2 ,修改学生 请按3 ,查询学生 请按4退出 请按5"); 15                 //用户的选择
16                 int choose = sc.nextInt(); 17                 switch (choose) { 18                 case 1: 19                     std.add("stu.txt"); 20                     break; 21                 case 2: 22                     std.delete("stu.txt"); 23                     break; 24                 case 3: 25                     std.update("stu.txt"); 26                     break; 27                 case 4: 28                     std.query("stu.txt"); 29                     break; 30                 case 5: 31                     System.exit(0);//退出jvm
32  } 33  } 34         } catch (Exception e) { 35  e.printStackTrace(); 36  } 37  } 38 }

 

IO流的代码块

 

 1 // package com.ujiuye.studentmanager.util;
 2 import java.io.File;  3 import java.io.FileInputStream;  4 import java.io.FileOutputStream;  5 import java.io.IOException;  6 import java.io.ObjectInputStream;  7 import java.io.ObjectOutputStream;  8 
 9 import java.util.ArrayList; 10 import com.ujiuye.studentmanager.Student; 11 public class IOUtils { 12     //
13     /*思路: 14  * ① 读取文件 ? 15  * 1》 若是文件没有 ,新建一个文件。 16  * 2》读取该文件 ,建立反序列化流。读取文件。 17  * 18      */
19     public static  ArrayList<Student>  getStudents(String fileName) throws IOException{ 20 // 若是文件没有 ,新建一个文件。
21         File file=new File(fileName); 22         if(!file.exists()) { 23  file.createNewFile(); 24  } 25         //建立一个集合,来存储学生对象
26         ArrayList<Student> list=null; 27 // 读取该文件 ,建立反序列化流。读取文件。
28         try( 29                 ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file)) 30  ){ 31             list = (ArrayList<Student>) ois.readObject(); 32         }catch (Exception e) { 33             //EOFException 若是有文件,可是文件中没有内容,报该异常。
34             list=new ArrayList<>(); 35  } 36         //返回集合
37         return list; 38  } 39     //
40     /*思路 : 41  * 前提:先将文件中的集合读取 。而后再进行写入 42  * ① 将list集合写入到文件中。 43  * ② 序列化流写入 44  * 45      */
46     public  static void writeToList(ArrayList<Student> list,String fileName) { 47         try( 48             ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new File(fileName))); 49  ){ 50  oos.writeObject(list); 51         }catch (Exception e) { 52  e.printStackTrace(); 53  } 54  } 55 }

 

下面为测试代码

 1 package com.ujiuye.studentmanager;  2 
 3 import static org.junit.Assert.*;  4 
 5 import java.io.IOException;  6 
 7 import org.junit.Test;  8 
 9 public class StudentDAOTest { 10     StudentDAO std=new StudentDAO(); 11  @Test 12     public void testAdd() throws IOException { 13         std.add("stu.txt"); 14  } 15 
16  @Test 17     public void testDelete() throws IOException { 18         std.delete("stu.txt"); 19  } 20 
21  @Test 22     public void testUpdate() throws IOException { 23         std.update("stu.txt"); 24  } 25 
26  @Test 27     public void testQuery() throws IOException { 28         std.query("stu.txt"); 29  } 30 
31 }

 

 

 1 package com.ujiuye.studentmanager.util;  2 
 3 import static org.junit.Assert.*;  4 
 5 import java.io.IOException;  6 import java.util.ArrayList;  7 
 8 import org.junit.Test;  9 
10 import com.ujiuye.studentmanager.Student; 11 
12 public class IOUtilsTest { 13 
14  @Test 15     public void testGetStudents() throws IOException { 16         System.out.println(IOUtils.getStudents("stu.txt")); 17  } 18 
19  @Test 20     public void testWriteToList() { 21         ArrayList<Student>  list=new ArrayList<>(); 22         list.add(new Student("zs", 19, "1001")); 23         list.add(new Student("zs1", 19, "1002")); 24         list.add(new Student("zs2", 19, "1003")); 25         IOUtils.writeToList(list, "stu.txt"); 26         
27  } 28 
29 }

 

下面为另一个版本

 1 package StudentManager1;  2 
 3 import java.io.Serializable;  4 
 5 public class Student implements Serializable{  6 
 7     /**
 8  *  9      */
10     private static final long serialVersionUID = 4858356809294180650L; 11     private String name; 12     private String stuNo; 13     private int age; 14     public Student(String name, String stuNo, int age) { 15         super(); 16         this.name = name; 17         this.stuNo = stuNo; 18         this.age = age; 19  } 20     public Student() { 21         super(); 22  } 23  @Override 24     public String toString() { 25         return "学生   姓名:" + name + " 学号: " + stuNo + " 年龄: " + age ; 26  } 27     public String getName() { 28         return name; 29  } 30     public void setName(String name) { 31         this.name = name; 32  } 33     public String getStuNo() { 34         return stuNo; 35  } 36     public void setStuNo(String stuNo) { 37         this.stuNo = stuNo; 38  } 39     public int getAge() { 40         return age; 41  } 42     public void setAge(int age) { 43         this.age = age; 44  } 45  @Override 46     public int hashCode() { 47         final int prime = 31; 48         int result = 1; 49         result = prime * result + age; 50         result = prime * result + ((name == null) ? 0 : name.hashCode()); 51         result = prime * result + ((stuNo == null) ? 0 : stuNo.hashCode()); 52         return result; 53  } 54  @Override 55     public boolean equals(Object obj) { 56         if (this == obj) 57             return true; 58         if (obj == null) 59             return false; 60         if (getClass() != obj.getClass()) 61             return false; 62         Student other = (Student) obj; 63         if (age != other.age) 64             return false; 65         if (name == null) { 66             if (other.name != null) 67                 return false; 68         } else if (!name.equals(other.name)) 69             return false; 70         if (stuNo == null) { 71             if (other.stuNo != null) 72                 return false; 73         } else if (!stuNo.equals(other.stuNo)) 74             return false; 75         return true; 76  } 77     
78     
79 }

 

 1 package StudentManager1;  2 
 3 import java.io.IOException;  4 import java.util.ArrayList;  5 import java.util.Iterator;  6 import java.util.Scanner;  7 
 8 public class StudentDao {  9 
10     public void add(String fileName) throws Exception{ 11         System.out.println("添加学生"); 12         Scanner sc=new Scanner(System.in); 13         System.out.println("请输入你想输入的学生的姓名"); 14         String name=sc.next(); 15         System.out.println("请输入你想输入的学生的学号"); 16         String stuNo=sc.next(); 17         System.out.println("请输入你想输入的学生的年龄"); 18         int age=sc.nextInt(); 19         IOUtils iu=new IOUtils(); 20         ArrayList<Student> list=iu.getStudents(fileName); 21         list.add(new Student(name,stuNo,age)); 22  iu.writeStudents(list, fileName); 23         System.out.println("添加成功"); 24  query(fileName); 25         
26         
27  } 28     public void delete(String fileName) throws Exception, Exception { 29         System.out.println("删除学生"); 30         Scanner sc=new Scanner(System.in); 31         System.out.println("请输入你想删除的学生的学号:"); 32         String input=sc.next(); 33         IOUtils iu=new IOUtils(); 34         ArrayList<Student> list=iu.getStudents(fileName); 35         Iterator<Student> it=list.iterator(); 36         while(it.hasNext()) { 37             Student stu=it.next(); 38             if(stu.getStuNo().equals(input)) { 39                 it.remove();break; 40             }else { 41                 System.out.println("数据未找到"); 42  } 43  } 44  iu.writeStudents(list, fileName); 45         System.out.println("删除成功"); 46  query(fileName); 47  } 48     public void change(String fileName) throws Exception, Exception { 49         System.out.println("更改学生"); 50         Scanner sc=new Scanner(System.in); 51         System.out.println("请输入你想更改的学生的学号"); 52         String stuNo=sc.next(); 53         IOUtils iu=new IOUtils(); 54         ArrayList<Student> list=iu.getStudents(fileName); 55         Iterator<Student> it=list.iterator(); 56         while(it.hasNext()) { 57             Student stu=it.next(); 58             if(stu.getStuNo().equals(stuNo)) { 59                 System.out.println("请输入你想更改的姓名"); 60                 String name=sc.next(); 61  stu.setName(name); 62                 System.out.println("请输入你想更改的年龄"); 63                 int age=sc.nextInt(); 64  stu.setAge(age); 65                 
66  iu.writeStudents(list, fileName); 67                 System.out.println("修改为功"); 68  query(fileName); 69                 break; 70             }else { 71                 System.out.println("未找到对应学号"); 72  } 73             
74  } 75         
76  } 77     public void query(String fileName) throws Exception{ 78         System.out.println("查询信息"); 79         IOUtils iu=new IOUtils(); 80         ArrayList<Student> list=iu.getStudents(fileName); 81         if(list.isEmpty()) { 82             System.out.println("数据为空,没法查询"); 83         }else { 84             Iterator<Student> it=list.iterator(); 85             while(it.hasNext()) { 86                 Student stu=it.next(); 87  System.out.println(stu); 88                 break; 89  } 90  } 91         
92         
93  } 94     public void exit() { 95         System.exit(0); 96  } 97 }

 

 

 1 package StudentManager1;  2 
 3 import java.util.Scanner;  4 
 5 public class Student_Main {  6 
 7     public static void main(String[] args) {  8         Scanner sc=new Scanner(System.in);  9         
10             while(true) { 11                 System.out.println("1增2删3该4查"); 12                 int input=sc.nextInt(); 13                 
14                 try { 15                 StudentDao stud=new StudentDao(); 16                 switch(input) { 17                 case 1:stud.add("stu.txt");break; 18                 case 2:stud.delete("stu.txt");break; 19                 case 3:stud.change("stu.txt");break; 20                 case 4:stud.query("stu.txt");break; 21                 case 5:stud.exit();break; 22  } 23  } 24                 catch(Exception e) { 25  e.printStackTrace(); 26  } 27  } 28         
29         
30  } 31 
32     
33 
34     
35 }
 1 package StudentManager1;  2 
 3 import java.io.File;  4 import java.io.FileInputStream;  5 import java.io.FileOutputStream;  6 import java.io.IOException;  7 import java.io.ObjectInputStream;  8 import java.io.ObjectOutputStream;  9 import java.util.ArrayList; 10 
11 public class IOUtils { 12 
13     public ArrayList<Student> getStudents(String fileName) throws IOException, Exception{ 14         File file=new File(fileName); 15         
16         if(!file.exists()) { 17  file.createNewFile(); 18  } 19         ArrayList<Student> list=null; 20         try ( 21                 ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file)); 22  ){ 23             list=(ArrayList<Student>) ois.readObject(); 24         }catch(Exception e) { 25  e.printStackTrace(); 26  } 27         
28         return list; 29         
30  } 31     
32     public void writeStudents(ArrayList<Student> list, String fileName) throws Exception{ 33         
34         try( 35                 ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(fileName)); 36  ){ 37  oos.writeObject(list); 38         }catch(Exception e) { 39             list=new ArrayList<>(); 40  } 41         
42         
43  } 44 }

 

 

 1 package StudentManager1;  2 
 3 import java.io.IOException;  4 import java.util.ArrayList;  5 
 6 import org.junit.jupiter.api.Test;  7 
 8 class IOUtilsTest {  9 
10  @Test 11     void testGetStudents() throws Exception { 12         IOUtils iu=new IOUtils(); 13         System.out.println(iu.getStudents("stu.txt")); 14  } 15 
16  @Test 17     void testWriteStudents() throws Exception { 18         ArrayList<Student>  list=new ArrayList<>(); 19         list.add(new Student("zs", "1001", 19)); 20         list.add(new Student("zs1", "1002",19)); 21         list.add(new Student("zs2", "1003", 19)); 22         IOUtils iu=new IOUtils(); 23         iu.writeStudents(list, "stu.txt"); 24  } 25 
26 }
 1 package StudentManager1;  2 
 3 import static org.junit.jupiter.api.Assertions.*;  4 
 5 import org.junit.jupiter.api.Test;  6 
 7 class StudentDaoTest {  8     StudentDao stud=new StudentDao();  9  @Test 10     void testAdd() throws Exception { 11         stud.add("stu.txt"); 12  } 13  @Test 14     void testDelete() throws Exception { 15         stud.delete("stu.txt"); 16  } 17  @Test 18     void testChange() throws Exception { 19         stud.change("stu.txt"); 20  } 21  @Test 22     void testQuery() throws Throwable { 23         stud.query("stu.txt"); 24  } 25  @Test 26     void testExit() { 27  stud.exit(); 28  } 29 }
相关文章
相关标签/搜索