发表于: 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调试


附上代码地址




返回列表 返回列表
评论

    分享到