【问题标题】:JUnit Testing if an object is in an arraylistJUnit 测试对象是否在数组列表中
【发布时间】:2021-03-25 05:37:45
【问题描述】:

大家好,我刚开始使用 JUnit,我有一个宠物和所有者类,在所有者类中,我目前正在尝试编写一个用于查找某个宠物的测试,并使用删除方法删除宠物并进行测试以查看那只宠物走了。我在所有者中有一个名为 find pet 的方法,它通过 ArrayList 中的所有宠物循环获取一个 id 并打印出具有匹配 id 的宠物

public int findPet(String petId)
    {
        int pos = -1;
        int i = 0;
        while (i < pets.size() && pos == -1)
        {
            if (pets.get(i).getPetId().equalsIgnoreCase(petId))
            {
                pos = i;
            }
            else
            {
                i++;
            }
        }
        return pos;
    }

这是我目前所拥有的:

@Test
    public void testFindPet() {
        
        System.out.println("Testing the FindPet() method");
        Owner o1 = new Owner("OID57","John"); 
        o1.addPet("PID01","dog","bowwow",4); 
        o1.addPet("PID02","dog","shep",6); 
        o1.addPet("PID03","cat","meow",4); 
        o1.addPet("PID04","snake","wally",2);
        
        o1.removePet("PID01");
   
    }

那么谁能帮我找出如何编写一个寻找宠物的测试?

【问题讨论】:

  • 如何帮助您?你有findPet 方法,你想测试什么?是否返回正确的位置?
  • 我想测试该方法是否真正找到了 Pet,我知道我可以编写代码,所以我知道它可以工作,但我在 JUnit 上做了几个练习,想知道如何在 JUnit 中测试它

标签: java class testing arraylist junit


【解决方案1】:

您的测试正在尝试移除宠物,但大概应该使用findPet 方法。假设是这种情况,使用 JUnit 断言:

@Test
public void testFindPet() {
    // Create an owner and some pets
    Owner owner = new Owner("OID57","John"); 
    owner.addPet("PID01","dog","bowwow",4); 
    owner.addPet("PID02","dog","shep",6); 
    owner.addPet("PID03","cat","meow",4); 
    owner.addPet("PID04","snake","wally",2);

    // Find a pet for this owner
    assertEquals(0, owner.findPet("P1D01"));

    // Check unknown pet
    assertEquals(-1, owner.findPet("unknown"));
}

(还假设findPet 方法是所有者类的成员)。

您可能还想研究使用 @BeforeEach 创建可跨多种测试方法使用的所有者和宠物。

【讨论】:

    【解决方案2】:

    我建议你这样做

    Owner owner;
    
    @Before
    public void setup() {
       owner = new Owner();
       //add pets to owner so that you dont have to do this in every test
       owner.addPet("PID01","dog","bowwow",4); 
       owner.addPet("PID02","dog","shep",6); 
       owner.addPet("PID03","cat","meow",4); 
       owner.addPet("PID04","snake","wally",2);
    }
    
    @Test
    public void testFindPet() {
       int result = owner.findPet("PID04");
       owner.removePet("PID04");
       //checks if it removed certain pet
       assertNotEquals(result, owner.findPet("PID04"));
    }
    

    【讨论】:

    • 我认为您正在测试 findPet 和 removePet
    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    相关资源
    最近更新 更多