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 -p1234 /*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 }
JUnit单元测试简版的学生管理系统相关推荐
- python管理系统web版_Python学生管理系统(web网页版)-Go语言中文社区
前言:本项目是使用Python的Django的web框架搭建的,是一个完整的学生管理系统,功能包括基本的增删改查 项目演示图: 首页展示数据的页面(index.html) 添加学生的页面(add.ht ...
- 用代码证明自己闲的蛋疼(四)——简易坑爹版学生管理系统
众所周知,学生管理系统一直频繁的出没在我们的毕业设计当中. 当然,其大多数都是基于BS(Browser/Server)开发的~当年萌新的我还妄想用C写一个win32控制台的管理系统作为毕设蒙混过关,然 ...
- 微信小程序版学生管理系统演示(一)
开始前的思考 微信小程序版的学生管理系统由什么组成? 组成这个系统的各个软件分别是什么? 这些软件需要用到哪些开发工具? 我的思路 微信小程序版的管理系统的组成 首先,作业限定了使用微信小程序,那么该 ...
- Python 学生管理系统+mysql+Flask
Python 学生管理系统 前言 项目目录 config py mapper.student_mapper.py static templates 主要代码块 student_controller.p ...
- [置顶]完美简版学生信息管理系统(附有源码)管理系统
简版学生信息管理系统 目前为止找到的简版系统中最新.最全的java类管理系统 点击进入简版系统 如果无法直接连接,请进入: https://blog.csdn.net/weixin_43419816/ ...
- 用python3做学生管理系统_详解用python实现基本的学生管理系统(文件存储版)(python3)...
详解用python实现基本的学生管理系统(文件存储版)(python3) 来源:中文源码网 浏览: 次 日期:2019年11月5日 详解用python实现基本的学生管理系统(文件存储版)( ...
- python登录系统文件版_详解用python实现基本的学生管理系统(文件存储版)(python3)...
这个是升级的版本,比较进阶一点的,相对与之前的文件管理系统,数据只是存储到了内存中,而不是存储到硬盘上,我们想让文件存储到硬盘上的话,一个是存储到文件里,一个是存储到数据库中,存储到数据库中的版本会后 ...
- 学生管理系统——C语言版
文章目录 学生管理系统--C语言版 主函数 录入学生信息 删除学生信息 修改学生信息 查找学生信息 打印学生信息 保存学生信息 读取学生信息 求班级成绩的平均值 学生管理系统--C语言版 主函数 in ...
- 学生管理系统(Java版)
学生管理系统(Java版) 前言:这个是大二做的课设(还是学生管理系统-),理论上虽然是4个人一组一起做的,但是,注意这个"但是",还是我一个人承担了所有-代码和文档基本都是我一个 ...
最新文章
- nginx中的502错误
- gogs只支持mysql5.7_Gogs 搭建教程
- 过年回家抢票不求人,试试这个开源抢票神器吧!
- Web Control 开发系列(三) 解析IPostBackEventHandler和WebForm的事件机制
- 使用JBoss Fuse和OpenShift进行Cloud Native Camel骑行
- js传中文参数 java取_js中文转码传输java后台 适用于用url传递中文参数
- Maven常用命令-创建Java项目
- 逻辑回归python实现
- zkcli远程连接_ZooKeeper客户端 zkCli.sh 节点的增删改查
- PyTorch(总)---PyTorch遇到令人迷人的BUG与记录
- 在一堆人还在犹豫《SEO实战密码》是否值得购买的时候,在下已经收藏了1/10的签名版
- php相册上传和删除吗,php上传与删除图片的简单范例
- MVC 《web考勤管理系统》 项目研发文献
- webstorm 下载安装教程
- 根据JAVA实体生成SQL建表语句
- minic 动作句型处理
- CHARACTERISTIC DEFINITION
- 网上下载文档需要付费?试试这几招,老师傅一般都会使用
- “软件测试”一般都在测试什么你知道吗?
- MyBatis最佳实践之——MBG代码生成工具