在 Eclipse 中使用 Junit 测试数组元素

Testing Array element using Junit in Eclipse

我想测试它是否使用 Junit 将所有元素添加到组数组中。

代码如下:

public class Group{

private String groupName; 

    private ArrayList<Item> group = new ArrayList<Item>();

    public Group(String groupName) { 
        super();
        this.groupName = groupName;
    }
        
    public String getGroupName() {
        return groupName;
    }
    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

    public void addItem(Item item) { 
        group.add(item);
    }
    public Item getItem(int index) {
        return group.get(index);
    }
    
    public String toString(boolean includePrice) {

        String string = "Group \"" + groupName + "\" contains...\n";
        for (int i = 0; i < group.size(); i++) {
            Item item = group.get(i); 
            String itemString = includePrice? item.toString() : item.getDisplayName();
            
            string = string + (i + 1) + ") " + itemString + "\n";
        }
        
        return string;
    }
}

有两种方法可以测试 addItem 方法是否将所有元素添加到组数组中-

第一种方式

像这样创建一个方法 getItems

public List<Item> getItems() {
    return group;
}

并在junit测试中调用getItems方法检查是否添加了所有元素

@Test
void shouldAddAllItems1() {
    Group group = new Group("group1");
    List<Item> expectedItems = Arrays.asList(new Item("item1"), new Item("item2"));
    group.addItem(new Item("item1"));
    group.addItem(new Item("item2"));
    assertEquals(expectedItems, group.getItems());
}

第二种方式

使用getItem(int index)方法检查是否添加了所有元素。

@Test
void shouldAddAllItems2() {
    Group group = new Group("group2");
    group.addItem(new Item("item1"));
    group.addItem(new Item("item2"));
    assertEquals(new Item("item1"), group.getItem(0));
    assertEquals(new Item("item2"), group.getItem(1));
}

注意:对于这两种解决方案,您都需要覆盖项目 class 中的 equals 和 hashcode 方法才能进行相等性检查。