現在已經能夠快速的進行測試了,本章將會使用一連串的練習來熟悉assert的各種用法,一個好的測試不應該包含任何的 if 或 for ,善用Assert 的API 可以避免這些情形。
基本驗證
1. Assert.assertEquals(int expected, int actual)
這可以說是最常使用到的API,在前幾次已經使用過,就不舉例了。
2. Assert.assertSame(), Assert.assertNotSame()
same 跟 equals 的差別其實就是平常使用 a == b 跟 a.equals(b) 是一樣的,看下面例子就可以了解
@Test
public void sample_assert_same(){
//arrange
Object expect = new Object();
Object expectNotSame = new Object();
Object actual = expect;
//assert
Assert.assertSame(expect, actual);
Assert.assertNotSame(expectNotSame, actual);
}
3. Assert.assertNull(), Assert.assertNotNull()
@Test
public void sample_assert_null(){
//arrange
Object expectNull = null;
Object expectNotNull = new Object();
//assert
Assert.assertNull(expectNull);
Assert.assertNotNull(expectNotNull);
}
4. Assert.assertTrue(), Assert.assertFalse()
這應該不需要舉例了,看名子就知道用途。
驗證陣列
1. Assert.assertArrayEquals()
@Test
public void sample_assert_array(){
int[] expect = new int[]{1, 2, 3};
int[] actual = new int[]{1, 2, 3};
Assert.assertArrayEquals(expect, actual);
}
2. 驗證集合
@Test
public void sample_assert_collection(){
List<Integer> expect = Arrays.asList(1, 2, 3);
List<Integer> actual = Arrays.asList(1, 2, 3);
Assert.assertEquals(expect, actual);
}
驗證例外
這個就比較特別了,JUnit 4 可以使用Annotation 來驗證是否會丟出某一種型態的例外
@Test(expected=IndexOutOfBoundsException.class)
public void sample_assert_exception(){
int[] sampleArr = new int[]{1, 2, 3};
int indexOutOfBoundNumber = sampleArr[3];
}