单元测试
1.创建一个类:写两个方法;一个用于计算数字相加;一个用于计算数字相除;
2.创建一个JUnit Test Case类:就是一个junit测试类,用于执行,创建过程如下:
(图1:创建Junit Test Case类)
(图2:红色方框中选择创建的类才可以点击next)
(图3:点击next到此界面,选择要测试的方法如图中T类下的add和device方法)
(图4:finish之后JUnit Test Case类创建成功;可以删除fail()写自己要测试的内容如图5)
(图5:调用T类中的加法除法的方法,做测试,测试方法右键--run as--JUnit Test,单独测试一个方法可双击@test在右键--run as--JUnit Test;assertEquals()是判断z值与6是否相等;接下来会写另外一种判断的方法)
(图6:运行结果)
3.使用hamcrest包:使用的方法更自然:如:assertEquals(6,z)可以被assertThat(z,is(6));is就是hamrest的Matchs类中的方法,当然还有其他的很多方法;(下一篇详细使用其他的函数方法)
(1)添加两个包,看了其他的教程是让加hamcrest-core-1.2和hamcrest-library-1.2jar包,但是在官网上下的其他版本的都没有matchs这个类(1.2版本没有)所以直接下载了hamcrest-all-1.2.0-0000.jar;里面有所有包的资源;所以也不用下载两个jar包了,直接下载一个全部的包;
加包过程:项目右键--build path--add external archives--选择jar包位置打开--apply--ok
(2)然而,运行是会报错的,因为hamcrest是不能和系统自带的junit包结合使用的,报错如下图:解决方法是在下载一个junit包,移除系统自带的junit包
(此图为系统自带junit包:右键--build path--remove即可;然后添加下载的junit包(我是胡乱的搜一下下载了一个,名字叫:junit-4.13-beta-1.jar;下载过程如下图))
(3)然后就可以使用matchs中的is方法了,注意:需要手动引入import static org.hamcrest.Matchers.*;
4.总结:(1)单元测试比传统的main方法测试好处:方法不用写到一个main方法中,不混乱,可以一起执行;第二个不用仔细观察来辨别每个函数的功能实现,哪一个函数出错了,哪一个函数没有输出之类的问题层出不穷,单元测试就是来解决这些问题的; (2)assertThat函数方法是junit包中的;is()函数方法是hamcrest包中的(具体应该是hamcrest-core包中的);(3)单元测试属于白盒测试;(4)assert:翻译,断言。其实就是判断的意思;(5)hamcrest属于新的断言:(6)failure指测试失败;error指程序本身出错(error和failure是有优先级的,出现error就不会有failure)