一、Junit4斷言
assertEquals(a, b)
assertFalse(a)
assertTrue(a)
assertNotNull(a)
assertNull(a)
assertNotSame(a, b)
assertSame(a, b)
@Test
publicvoidtestAssert()throwsException {
intexpectNum = 123;
intactuNum = 123;
String storeId ="123456";
// assertEquals(expect,actual),測(cè)試expect是否等于actual(expect和actual是原始類型數(shù)值(primitive value)或者必須為實(shí)現(xiàn)比較而具有equal方法)
assertEquals(expectNum, actuNum);//運(yùn)行成功
assertEquals(storeId,"12345");//運(yùn)行失敗
//assertFalse(condition)測(cè)試是否為false(假),condition是一個(gè)Boolean數(shù)值
assertFalse(expectNum==100);//運(yùn)行成功
// assertTrue(condition) 測(cè)試是否為true(真),condition是一個(gè)Boolean數(shù)值
assertTrue(expectNum==123);//運(yùn)行成功
//assertNotNull(object),測(cè)試object是否非空,object是一個(gè)對(duì)象或者null。
PingJia pingjia=null;
assertNotNull(pingjia);//運(yùn)行失敗
//assertNull(object),測(cè)試object是否非空,object是一個(gè)對(duì)象或者null。
assertNull(pingjia);//運(yùn)行成功
// assertNotSame(unexpected, actual)測(cè)試unexpected和actual是否沒有都引用同一個(gè)對(duì)象。
String storeId1 = storeId;
assertNotSame(storeId, storeId1);//運(yùn)行失敗
// assertSame(unexpected, actual)測(cè)試unexpected和actual是否沒有都引用同一個(gè)對(duì)象。
assertSame(storeId, storeId1);//運(yùn)行成功
}
二、junit新斷言
1、JUnit4.4引入了Hamcrest框架,使用全新的斷言語法:assertThat,結(jié)合Hamcest提供的匹配符,只用這一個(gè)方法,可以實(shí)現(xiàn)所有的測(cè)試,Hamcest提供了一套匹配符Matcher,這些匹配符更接近自然語言,可讀性高,更加靈活;
2、assertThat語法如下:
assertThat(T actual, Matcher<T> matcher);
assertThat(String reason, T actual, Matcher<T> matcher);
actual是接下來想要驗(yàn)證的值;
matcher是使用Hamcrest匹配符來表達(dá)的對(duì)前面變量所期望的值的聲明,如果actual值與matcher所表達(dá)的期望值相符,則斷言成功,否則斷言失敗。
reason是自定義的斷言失敗時(shí)顯示的信息。
3、注意事項(xiàng):
a. JUnit4.4之后的版本才能使用assertThat方法;
4、優(yōu)點(diǎn)
1)統(tǒng)一:只需一條assertThat語句即可替代舊有的其他語句(如assertEquals,assertNotSame,assertFalse,assertTrue,assertNotNull,assertNull等),使斷言變得簡(jiǎn)單、代碼風(fēng)格統(tǒng)一,增強(qiáng)測(cè)試代碼的可讀性和可維護(hù)性。
2)直觀:assertThat不再像assertEquals那樣,使用比較難懂的“謂賓主”語法模式(如:assertEquals(3, x);)。相反,assertThat使用了類似于“主謂賓”的易讀語法模式(如:assertThat(x,is(3));),使得代碼更加直觀、易讀,符合人類思維習(xí)慣。