2013-06-04 73 views
0

我已經設置了用戶添加到ArrayList,並返回false如果添加相同的用戶的方法:Junit的測試與數組列表

public boolean addUser(K pass, V user) 
{ 
    if (username.contains(user)) 
    { 
     return false; 
    } 
    else 
    { 
     password.add(pass); 
     username.add(user); 
     size++; 
     return true; 
    } 
} 

然後,我有一個JUnit測試assertFalse(true)因爲那是什麼添加兩個同名用戶時,我的方法返回:

@Test 
public void testAddingTwoOfTheSameUserToArrayList() { 
    User<String, String> user1 = new User<String, String>(); 
    user1.addUser("password", "SpeedinDave"); 
    user1.addUser("password", "SpeedinDave"); 
    assertFalse(true); 
} 

但是,它的測試總是變成虛假(紅色條)。有任何想法嗎?

+0

什麼是用戶名對象? – ssedano

+2

你期望'assertFalse(true)'做什麼?爲什麼你從不使用'addUser'的結果? –

+1

你想要斷言返回值,所以你需要捕獲返回值並將其作爲參數傳遞給'assertFalse()' –

回答

8

您應該測試類似的東西:

@Test 
    public void testAddingTwoOfTheSameUserToArrayList() { 
     User<String, String> user1 = new User<String, String>(); 
     user1.addUser("password", "SpeedinDave"); 
     assertFalse(user1.addUser("password", "SpeedinDave");); 
    } 

,以確保第二addUser()返回false。

assertFalse(b)如果參數b爲假則會成功。所以如果你通過true,它總是會失敗。

+0

天才!非常感謝你! – user2297666

+2

修改第一個'user1.addUser(「password」,「SpeedinDave」);'assertTrue(user1.addUser(「password」,「SpeedinDave」));'' –

3

現在,您並未測試addUser()方法的返回值,而是布爾常量true的計算結果爲false(這絕不會是真的)。你可能想要類似於:

@Test 
    public void testAddingTwoOfTheSameUserToArrayList() { 
     User<String, String> user1 = new User<String, String>(); 
     assertTrue(user1.addUser("password", "SpeedinDave")); 
     assertFalse(user1.addUser("password", "SpeedinDave")); 
    }