2012-12-10 231 views
1

假設MYLIST的add方法接受一個參數,並且指定如果null被賦予作爲參數拋出一個NullPointerException異常 的一個特徵。完成此JUnit測試方法測試 該功能的加入方法:JUnit測試方法,測試add方法

public void testAddNull() { 
    MyList<String> ls = new MyList<String>(); 

    } 

這就是答案:

public void testAddNull() { 
    MyList<String> ls = new MyList<String>(); 
     try { 
     ls.add(null); 
     fail(); 
     } catch (NullPointerException e) { 
     } 
    } 

到底爲什麼是失敗的();需要在這裏,不會因爲ls.add(null)導致它失敗,所以不會把fail();這裏多餘?

+0

你應該把失敗()關閉...這是什麼寫在答案的關鍵,如果我把它關閉將它的作用是相同 – rae1

+0

? – cloud9resident

+0

我不知道,但你應該嘗試找出答案。這是回答您的問題的最快捷方式,但我現在沒有Java編譯器。 – rae1

回答

4

上述測試方法將失敗,如果ls.add(null);確實不是則拋出NullPointerException。因爲期望的行爲是拋出異常,當異常在catch (NullPointerException e)釣到的測試將通過。

使用JUnit 4你也可以這樣做:

@Test(expected = NullPointerException.class) 
public void testAddNull() { 
    ls.add(null); 
} 

這將需要測試的代碼拋出一個NullPointerException。否則,測試將失敗。