1.JUint简介
1.JUnit是一个开放的源代码的JAVA测试框架,用语编写和运行可重复的测试;
2.JUnit测试是程序员测试,所谓的白盒测试,是一个Java语言单元测试框架,多数Java的开发环境都已集成了JUnit作为单元测试的工具;
3.JUnit在极限编程和重构中被极力推荐使用,因为在实现自动化单元测试的情况下可以大大的提高开发效率;
4.每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测试我们称之为单元测试。
在编写大型程序的时候,需要写成千上万个方法或者函数,也许我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为如果我们今后对程序扩展,用到某个函数的其他功能,而这个功能有bug的话,那绝对是件非常郁闷的事
使用测试注解的基本知识
@Test注解
用于修饰测试方法,表示要对被测试类的某个或者某些方法进行测试;
@Test(timeout=xxx)注解
xxx表示时间,以ms为单位:
一般称为限时测试或者超时测试,用于设置当前测试方法在一定时间内运行完,否则返回错误。
对于那些逻辑很复杂,循环嵌套比较深的程序,很有可能出现死循环,因此一定要采取一些预防措施,限时测试是一个很好的解决方案,给测试函数或方法设定一个执行时间,超过这个时间,程序就会被系统强行终止,并且系统还会汇报该函数结束的原因是超时,这样就可以发现这些bug了。
@Ignore(不理)注解
- @Ingore注解用于修饰测试方法,表示忽略测试用例;
- 其含义是“某些方法尚未完成,暂不参与此次测试”。这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应的函数,只需要把@Ignore标注删除,就可以正常测试。
@Parameters注解
- 用于修饰产生数据集合的方法,用于参数化
- 测试时,可能需要测试大量不同的路径,从而要使用大量的数据,使用@Parameters注解只需要编写一个测试代码即可众多数据进行多次测试。
@RunWith注解
- 用于指定一个测试运行器,@RunWith用来修饰类,而不能修饰函数;
- 只要对一个类指定了Runner,那么这个类中的所有函数都被这个Runner来调用;
- 常用的内置测试运行器有Parameterized(参数化数据)和Suite(测试集)
JUnit中的方法
断言
- 用来断定程序中是否存在缺陷
- A: assertEquals(预期结果,实际结果),用来测试期望结果的断言,即测试两个对象是否相等,这个方法使用非常多。
B:其中错误消息可选,假如提供,将会在发生错误时候报告这个消息,该断言会使测试立即失败,通常用在测试不能达到的分支上(如异常)
setUp和tearDown
-
在实际的测试中我们测试某个类的功能是常常要执行一些共同操作,完成以后需要销毁所占用的资源(例如网络连接、数据库连接、关闭打开的文件等),JUnit 提供了setUp方法、tearDown方法、setUpBeforeClass方法、tearDownAfterClass方法
-
setUp方法
A:在每个测试方法之前都会运行
B:主要实现测试前的初始化工作 -
tearDown方法
A:在每个测试方法结束以后都会执行
B:主要实现测试完成后的垃圾回收等工作 -
setUpAfterClass方法
在所有测试方法执行后执行
实际使用时候,setUp方法可有@Before注解代替, tearDown方法可用@After注解代替,setUpBeforeClass方法可用@BeforeClass代替,setUpAfterClass方法可用@AfterClass代替