zoukankan      html  css  js  c++  java
  • JUnit单元测试&简版学生管理系统

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

    非常的方便,也很清晰,提高的开发的速度。

    目前普遍使用的JUnit版本为JUnit4

    JUnit的格式为:@Test  

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

    在有多个JUnit测试存在时,直接右键运行会将 全部都执行,如果只需要测试一个功能,就先左键选中这个代码块,再右键运行。

    JUnit单元测试的要求是:

    权限修饰符必须是public  这是因为往往JUnit测试代码会被写在test包下,所以修饰符要为public,负责无法访问

    返回值类型为空。

    没有参数

    正规的单元测试
    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 }
  • 相关阅读:
    windows运行shell脚本
    Android Webview H5资源本地化
    Vscode开发Python环境安装
    Vscode开发Java环境搭建
    为什么索引可以提高效率?
    Java内存模型
    栈和队列----向有序的环形单链表中插入新节点
    栈和队列----单链表的选择排序
    栈和队列----将搜索二叉树转换成双向链表
    栈和队列----在单链表中删除指定值的节点
  • 原文地址:https://www.cnblogs.com/ywzbky/p/10712901.html
Copyright © 2011-2022 走看看