使用数组列表进行Junit测试

时间:2013-06-04 15:42:45

标签: java junit arraylist

我设置了一个方法来将用户添加到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;
    }
}

然后我对assertFalse(true)进行了JUnit测试,因为这是我的方法在添加两个具有相同名称的用户时返回的内容:

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

然而,测试总是错误(红色条)。有什么想法吗?

2 个答案:

答案 0 :(得分:8)

你应该测试类似的东西:

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

确保第二个addUser()返回false。

如果参数b为false,

assertFalse(b)将成功。因此,如果您通过true,它将始终失败。

答案 1 :(得分: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"));
    }