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