Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用数组列表进行Junit测试_Java_Junit_Arraylist - Fatal编程技术网

Java 使用数组列表进行Junit测试

Java 使用数组列表进行Junit测试,java,junit,arraylist,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++; re

我设置了一个方法将用户添加到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;
    }
}
然后我对assertFalsetrue进行了JUnit测试,因为添加两个同名用户时,我的方法会返回这个结果:

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

然而,它的测试总是出现错误的红色条。有什么想法吗?

你应该测试一下:

@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,则assertFalseb将成功。因此,如果您通过true,它将始终失败。

现在您不是在测试addUser方法的返回值,而是布尔常量true的计算结果为false,这将永远不会为true。您可能需要以下内容:

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

什么是用户名对象?您希望assertFalsetrue做什么?为什么从不使用addUser的结果呢?您想要断言返回值,所以需要捕获返回值并将其作为参数传递给AssertFalse。您当前的测试实际上并没有测试您的方法。首先,是@quetzalcatl所说的。第二,如果你使用assertFalse,你应该输入false而不是true。天才!非常感谢你!修改第一个user1.addUserpassword,SpeedinDave,也可能是值得的;要成为assertTrueuser1.addUserpassword,SpeedinDave;