一、JUnit(单元测试)是干什么的?
JUnit是单元测试工具的意思,JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架( )。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。 单元测试主要是来测试程序的结果和自己期望的值是否相等。
二、JUnit测试框架目前大体分为两个版本(JUnit 3.8 和 JUnit 4.x)
JUnit测试框架目前大体分为两种(JUnit 3.8 和 JUnit 4.x)
———————————— JUnit 3.8 ———————————————
涉及到的包一般是 junit..*
1.在 JUnit 3.8 中,如果要测试类,那么测试类的命名规则就是在这个类名后面加上
Test,如.java,测试类要继承类,而类又继承于类,测试方法需满足如下原则:
1)修饰符设为
2)返回类型 void
3)没有方法参数
4)方法名称必须以test开头(它通过反射找出所有方法,然后找出以test开头的方法)。
2.不能依赖于测试方法的执行顺序
删除一些方法后不会对其他的方法产生任何的影响,我们不能依赖于测试方法的执行顺序。
Test Case之间一定要保持完全的独立性,不允许出现任何的依赖关系。
3.setUp方法和方法都是类的方法
1)setUp方法是在执行每个测试方法之前执行的
2)方法是在执行每个测试方法之后执行的
———————————— JUnit 4 ———————————————
涉及到的包是 org.junit.*
1、在junit 4 当中测试类无需继承于 类,命名不再有中的要求,测试方法的名字也无需以test开头,主要以注解的方式来定义,只要在测试方法加上@Test就可以进行测试,但有些原则还是要以 的风格来设计,比如测试方法以test开头,习惯问题吧。
2、注解的应用
三、测试方法
以前我们写好了一个类,类里有写好的方法,我想去测试,怎么测试?写个main方法,然后new这个类,然后去调用这个类里面的方法去测试,但是如果我们写了100个类,要写100个main方法去测试,完了之后,还要一个一个的删除,比较麻烦,JUnit就很好的解决了这样的问题。
1、举个例子新建一个项目,创建一个类junit单元测试,里面写两个测试方法
以前我们要测试中的方法的话,直接在类中写个mian方法然后去测试中的方法
2、现在我们用JUnit的话,有一个很大的好处就是测试代码和项目代码完全分离。在Maven工程中,目录结构十分清楚,可以在test资源目录下进行单元测试。
3.通过右击类,选择newjunit单元测试,再选择Junit Test Case。来新建一个类的单元测试,同时也可以选择里面需要测试的方法。
5、运行测试方法有几种
1.右键项目中测试方法直接Run As
2.双击方法名,右键Run As
出现绿条则说明测试成功,出现红条则说明出现失败
四、JUnit注解
1、@Test:定义一个测试方法的标志
创建完后,测试类中的方法,在中测试类需要继承才能测试其中的方法,而在中用的是注解,不需要继承。
2、@Test(=1000) :设置超时时间,如果测试时间超过了你定义的,测试失败
比如说我想测试一个算法,看看能不能在某个时间内完成
例如,在方法上@Test(=10)就是看此方法能不能再10毫秒内运行完毕
如果不能再10毫秒内运行完毕则报错 test timed out after 10
3、@Test():申明出会发生的异常比如 @Test( =.class)
如:假设有些异常你在这不想处理,可以忽略掉
如int a = 10/0会抛如下异常 在@Test中加入=.class上面抛出的异常,表示这个异常在这里不处理,可以忽略,运行后不报错
4、@ :让测试方法或测试类不被执行,让其失去测试的功能
如:假设有很多方法时,有些方法你不行测试而其他方法你都要测试,则可通过注解来达到目的。
在不用测试的方法上加上@表示此方法不参与测试如在()方法上加上@注解,则在执行这个测试类的时候不会执行此方法
五、总结
使用规范:
1.测试方法上必须使用@Test进行修饰;
2.测试方法必须使用 void进行修饰,不能带任何参数;
3.新建一个源代码目录来存放我们的测试代码;
4.测试类的包应该和被测试的包保持一致;
5.测试类中的方法都应该可以进行独立测试,测试方法间不能有任何依赖;
6.测试类使用Test作为类名的后缀;
7.测试方法使用testc作为方法前缀。
测试结果:
1.测试用例不是用来证明你是对的,而是证明你没有错。
2.测试用例用来达到想要的预期结果,但对于逻辑错误无能为力。
3.一般由单元测试使用的断言方法判断失败所引起的,这经表示测试点发现了问题,就是说程序输出的结果和我们预期的不一样。
4.Error是由代码异常引起的,他可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug。