2013-06-04 43 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")); 
    }