Search on the blog

2013年9月19日木曜日

OSS日記(3) Unit Testのソースを書いてみる

 org.apache.commons.lang3.ValidateクラスのinclusiveBetweenメソッドのテストを書いてみた。
まず、自分で書いてみたテスト。
@Test
public void testInclusiveBetween()
{
    try {
        Validate.inclusiveBetween(0, 10, -1);
        fail("An IllegalArgumentException was not thrown.");
    } catch (IllegalArgumentException e) {
        assertEquals("The value -1 is not in the specified inclusive range of 0 to 10", e.getMessage());
    }
    Validate.inclusiveBetween(0, 10, 0);
    Validate.inclusiveBetween(0, 10, 3);
    Validate.inclusiveBetween(0, 10, 10);        
    try {
        Validate.inclusiveBetween(0, 10, 11);
        fail("An IllegalArgumentException was not thrown.");
    } catch (IllegalArgumentException e) {
        assertEquals("The value 11 is not in the specified inclusive range of 0 to 10", e.getMessage());
    }
}
実際のテストコード。
@Test
public void testInclusiveBetween()
{
    Validate.inclusiveBetween("a", "c", "b");
    Validate.inclusiveBetween(0, 2, 1);
    Validate.inclusiveBetween(0, 2, 2);
    try {
        Validate.inclusiveBetween(0, 5, 6);
        fail("Expecting IllegalArgumentException");
    } catch (final IllegalArgumentException e) {
        assertEquals("The value 6 is not in the specified inclusive range of 0 to 5", e.getMessage());
    }
}

うーん、なるほど。inclusiveBetweenの内部ではcompareToを使って比較しているので数値だけじゃなくて文字列も確認しないといけないか。
区間の中にあるとき、区間の端にあるとき、区間の外にあるときの3種類でテストされているけど、始点と終点でやらなくてもいいんだろうか??経路網羅はされているからいいのだろうか。大したボリュームじゃないから書いとけばいいのにって気もする。


0 件のコメント:

コメントを投稿