20172313 2017-2018-2 《程序设计与数据结构》实验二报告
课程:《程序设计与数据结构》
班级: 1723
姓名: 余坤澎
学号:20172313
实验教师:王志强
实验日期:2018年4月18日
必修/选修: 必修
1.实验内容
- 学习使用JUnit
- 以TDD的方式研究学习java,写JUnit测试用例。 -体会OCP原则和DIP原则的应用,初步理解设计模式,并对设计样例进行扩充。
- 理解并掌握面向对象三要素:封装、继承、多态。
- 熟悉S.O.L.I.D原则。
- 以TDD的方式开发一个类 。
- 学习使用starUML对代码进行建模,绘制出UML图
2. 实验过程及结果
-
1.在IDEA中进行JUnit插件的安装。
-
2.第一个节点是使用JUnit对样例进行测试
https://gitee.com/CS-IMIS-23/20172313yukunpeng/blob/master/test/MyUtilTest.java -
3.在学习完了如何测试之后,下一个节点就是自己学习用TDD来写一个测试样例。
https://gitee.com/CS-IMIS-23/20172313yukunpeng/blob/master/test/StringBufferDemoTest.java -
4.第三个节点是按照要求对设计样例进行扩充。
这道题篇幅过长,在这里直接给上码云的链接。https://gitee.com/CS-IMIS-23/20172313yukunpeng/blob/master/exp/MyDoc.java -
5.在学会了写测试样例后,第四个节点要求按照要求来开发一个类。
https://gitee.com/CS-IMIS-23/20172313yukunpeng/tree/master/exp(complex类的代码)
https://gitee.com/CS-IMIS-23/20172313yukunpeng/tree/master/test(用TDD对complex进行测试) -
6.最后一个节点是画一个UML图。由于在蓝墨云上提交的过于简单,现更正如下。
3. 实验过程中遇到的问题和解决过程
- 问题1:老师在做展示的时候提到了JUnit3和JUnit4存在一定的区别,我自己就上网找了一些资料进行了解。
- 问题1解决方案:大体上来说,两者的区别如下
1.在JUnit3中需要继承TestCase类,但在JUnit4中已经不需要继承TestCase
2.在JUnit3中需要覆盖TestCase中的setUp和tearDown方法,其中setUp方法会在测试执行前被调用以完成初始化工作,而tearDown方法则在结束测试结果时被调用,用于释放测试使用中的资源,而在JUnit4中,只需要在方法前加上@Before,@After
3.在JUnit3中对某个方法进行测试时,测试方法的命令是固定的,例如对addBook这个方法进行测试,需要编写名字为tetAddBook的测试方法,而在JUnit4中没有方法命令的约束,在方法的前面加上@Test,这就代表这个方法是测试用例中的测试方法。 4.新的断言assertThat
5.@BeforeClass 和 @AfterClass 。在JUnit3,如果所有的test case仅调用一次setUp()和tearDown()需要使用TestSetup类
6.测试异常处理@Test(expected = DataFormatException.class)
7.设置超时@Test(timeout = 1000)
8.忽略测试@Ignore
9.集成测试
-
这里的内容过多,过于细致,在这里不方便过多赘述,在本博客的末尾附上两篇文章的地址以便日后的复习。
-
问题2:在安装JUnit时按照娄老师博客的步骤操作之后发现自己所编写的类名依旧是红色的,无法正常使用。(这个问题当时忘记截图了——)
-
问题2解决方案:我一开始以为是我的类名拼写有误,在检查了一遍之后发现没什么问题,我按照娄老师所写的内容又导入了一遍junit.jar包,可还是没有成功,最后在向助教请教了之后是我没有导入,按Alt + Enter导入后问题就得以解决了。
-
问题3:在做第四个节点的内容的时候,发现自己进行TDD测试的时候,尽管预期结果和实际结果相等,但还是通不过测试,我会预测结果的形式进行更改,无论是改成字符串还是改成对象的形式,问题都无法得到解决。
-
问题3解决方案:看到蓝墨云上郭恺同学也遇到了同样的问题,向他请教过后在创建对象的时候都加上了.toString的后缀。
-
问题4:在蓝墨云提交的时候有的没有附上码云链接且实验五内容过于简单,现已在上方进行补充。
其他
经过这一次的实验还是发现了自己很多的不足,包括读题的时候对题意的理解不清,总是用自己的理解去做题,还有就是经常粗心大意,犯了很多小错误耽误试验的进程。所以还是希望在以后的学习生活中能够尽量不犯这些小错误。