0

我设置了一个方法来将用户添加到,如果添加了相同的用户ArrayList,则返回:false

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);
}

但是,测试总是错误的(红色条)。有任何想法吗?

4

2 回答 2

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了,它总是会失败。

于 2013-06-04T15:46:33.510 回答
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"));
    }
于 2013-06-04T15:57:56.253 回答