JUnit4学习
基本知识
Junit最初是由Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework),为单元测试(Unit Test)的支持框架。用来编写和执行重覆性的测试。即所谓白盒测试。
它包括了以下的特性:
1. 对预期结果作断言
2. 提供测试装备的生成与销毁
3. 易于组织执行测试
4. 图形与文字界面的测试器
环境配置:
环 境:
Eclipse 中配置junit,选择项目Junit4(在Package Explorer中) -> 右击鼠标 -> 选择properties -> 选择Java Build Path (在左边的菜单中) -> 在右边选择标签 Libraries -> 单击按钮“Add Library” -> 选择JUnit , 单击按钮 “Next>” -> 选择JUnit library version 为: JUnit4 -> 单击按钮“Finish” –> 单击按钮 “OK”
Junit4是Junit框架有史以来的最大改进,其主要目标是利用java5的Annotation特性来简化测试用例的编写。
JUnit 4 常用的几个annotation 介绍
@Before:初始化方法,在任何一个测试执行之前必须执行的代码;
@After:释放资源,在任何测试执行之后需要进行的收尾工作。在每个测试方法执行之后执行一次,该annotation只能修饰public void 方法;
@Test:测试方法,表明这是一个测试方法。在Junit中将会自动被执行。该annotation只你呢个修饰public void 方法。对于方法的声明也有如下要求:名字可以随便取,没有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一 个异常。至于方法内该写些什么,那就要看你需要测试些什么了;在这里可以测试期望异常和超时时间,如 @Test(timeout = 100):我们给测试函数设定一个执行时间,超过了这个时间(100毫秒),它们就会被系统强行终止,并且系统还会向你汇报该函数结束的原因是因为超时, 这样你就可以发现这些Bug了。
@Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。
@BeforeClass:针对所有测试,只执行一次,且必须为public static void;
@AfterClass:针对所有测试,将会在所有测试方法执行结束后执行一次,且必须为public static void;
所以一个Junit 4 的单元测试用例执行顺序为:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass;每一个测试方法的调用顺序为:@Before –> @Test –> @After。
常用的断言介绍
assertArrayEquals(expecteds, actuals) |
查看两个数组是否相等。 |
assertEquals(expected, actual) |
查看两个对象是否相等。类似于字符串比较使用的equals()方法 |
assertNotEquals(first, second) |
查看两个对象是否不相等。 |
assertNull(object) |
查看对象是否为空。 |
assertNotNull(object) |
查看对象是否不为空。 |
assertSame(expected, actual) |
查看两个对象的引用是否相等。类似于使用“==”比较两个对象 |
assertNotSame(unexpected, actual) |
查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象 |
assertTrue(condition) |
查看运行结果是否为true。 |
assertFalse(condition) |
查看运行结果是否为false。 |
assertThat(actual, matcher) |
查看实际值是否满足指定的条件 |
fail() |
让测试失败 |