現在已經能夠快速的進行測試了,本章將會使用一連串的練習來熟悉assert的各種用法,一個好的測試不應該包含任何的 iffor ,善用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];
    }

results matching ""

    No results matching ""