Java 使用数组列表进行Junit测试
我设置了一个方法将用户添加到ArrayList,如果添加了相同的用户,则返回false: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
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;