JUnit类包含了一组静态的测试方法,用于验证期望值expected和实际值actual逻辑比对是否正确,若测试失败,标志为未通过测试。
如果期望值和实际值比对失败,Assert类就会抛出一个AssertionFailedError异常,Junit测试框架将这种错误归入Fails并加以记录。
方法 | 描述 |
assertTrue(condition) | 查看运行结是否为真 |
assertFalse(condition) | 查看运行结是否为假 |
assertArrayEqual(expcteds , actuals) | 查看两个数组是否相等 |
assertEquals(expected , actual) | 断言两个对象相等 |
assertNotEquals(expected , actual) | 断言两个对象不相等 |
assertNull(object) | 断言对象为空 |
assertNotNull(object) | 断言对象不为空 |
assertSame(expected , actual) | 断言两个引用指向同一个对象 |
assertNotSame(unexpect , actual) | 断言两个引用指向不同的对象。 |
fail | 让测试失败,并给出指定的信息 |
以上断言除了参数(如condition、expected , actual)之外还有一个重载的方法,参数中多了一个字符串,比如assertTrue(condition)与assertTrue(message,condition) 其中“message”这个位置可以输入出错提示信息,即当运行出错时,提示message的内容。
在Junit4之后除了原来的assert之外,还加了另外一个assert叫assertThat,替代其他所有的assert。方法格式为:assertThat(actual , matcher)第二个值可以是一个规则匹配器,比如:assertThat(a , is(8)); a是测试中计算的值,is(8)判断计算值是不是一个8.原来的判断方法为:assertEquals(8, z);与原来的方法比的优势:与英语的自然语法更接近。
第二个参数是一个org.hamcrest.Matcher<T>,这种方法调用来自于hamcrest包,如果用这种方法调用,就需要下载hamcrest包。
在eclipse中需要导入hamcrest 的jar包。工程名右击—>new—>folder—>foldername 命名为lib,将下载的hamcrest-core-1.3.jar 和hamcrest-library-1.3.jar导入到lib中。
工程名右击—>Build Path—>configureBuild Path —>对话框中选择Libraries标签—>右侧选择Add JARs…—>对话框中选工程名下面的lib文件夹—>选hamcrest-core-1.3.jar 和hamcrest-library-1.3.jar—>ok。
测试类需要中引入:import static org.hamcrest.Matchers.*;包
这时候测试不会通过,出现安全错误,因为JUnit包和hamcrest包,使用的classloder不是同一种包。将Eclipse中自带的JUnit去掉,自己引入JUnit 的jar包,这里引入方法同hamcrest-core-1.3.jar 和hamcrest-library-1.3.jar的引入。必须导入JUnit4.4之后的版本才能使用assertThat方法