发表于: 2017-09-12 00:11:37
1 913
今天完成的事情:
1. 学习Junit,并尝试写自己的第一个单元测试,记着要写在自己的src/main/test下。
Junit测试的好处是不用再写main函数来测功能是否好用啦。
Junit有Junit3和Junit4之分,在4中可以直接用JDK 5中的annotation,方便又简洁
现在就来为之前写的用Spring JDBCTemplate连接数据库写个单元测试
a. 选择IStudentDAO类右键new->Junit Test Case
b. 选择new junit 4 test,选择目标文件夹
c. 选择要测试的方法
d. 下面是Eclipse为我们自动生成的代码,我们只需要去完成具体的测试代码就OK了
e.运行Junit测试,看是否能够成功,右键run as JUnit Test
一个失败了,查看失败原因,发现整个数据库是空的。然后前面其实add和delete都失败了,改进测试,对add和delete也进行断言判断
在dao.addStudent(student)上设置断点,Debug as JUnit Test,程序在断点上停住,按F5深入方法中,F6跳入下一步,打开variables View可以查看当前所有变量的值。
debug过程中发现add方法成功了,其他方法继续调试
调试之后发现原因:JUnit Test并不是按顺序执行的,不是说你把TestAddStudent方法写在前面,就会先执行add,它们是并发的,所以在add没有完成的时候,执行delete,update,search等等,当然会出错,因为这个时候表是空的。(如果想控制执行顺序可以添加@FixMethodOrder注释,https://www.tianmaying.com/tutorial/junit4order)
同时,为了保证测试每次都好使,可以加上beforeTest和afterTest, 如果没有这个表,beforeclass就建一个,afterclass负责删除表中数据,以防再次运行时出错,下面是改完后的JUnit测试,运行成功
明天计划的事情:
完成剩下的任务
遇到的问题:
1. Junit测试的顺序问题(已解决)
收获:
Junit测试的运行与Debug调试
附上代码地址
评论