java - 从另一个类添加到对象 ArrayList

标签 java arraylist junit4

我有一个名为 Item 的类。

public class Item {

private int code;
private String name;
private double price;
private int quantity;

public Item(int code, String name, double price, int quantity) {
    setCode(code);
    setName(name);
    setPrice(price);
    setQuantity(quantity);
}
//Item getters and setters

我有一个名为 Stock 的类,它创建一个项目数组列表。

public class Stock {
private ArrayList<Item> stock;

public Stock() {
    stock = new ArrayList<Item>();
}

public ArrayList<Item> getStock() {
    return stock;
}

我还有一个名为 ItemRegister 的类,它将一个项目添加到 Stock 中。

public class ItemRegister extends Stock {

public void registerItem(String name, double price) {
    getStock().add(new Item(setItemCode(), name, price, 0));
}

private int setItemCode() {
    return getStock().size() + 1;
}

我正在使用单元测试来查看是否已将商品添加到库存中。

public class ItemRegisterTest {

@Test
public void testIfHasRegisteredItemInStock() {
    Stock s = new Stock();
    assertTrue(s.getStock().size() == 0);
    ItemRegister i = new ItemRegister();        
    i.registerItem("Oleo", 20.0);
    assertTrue(s.getStock().size() == 1);
}

}

当我运行这些测试时,它返回一个错误。 在第二个 assertTrue 上,如果我使用对象 i 进行测试,它将返回 true,但我想要的是添加到 Stock 而不是 ItemRegister 因为如果稍后我想咨询 Stock,我会调用 Stock 而不是 ItemRegister

最佳答案

从评论来看,您可以做的可能是更改父子关系并让 ItemRegister 保存 Stock 对象的实例。因此,您可以像这样修改 ItemRegister 类:

public class ItemRegister  {
    Stock s;
    public ItemRegister(Stock s) {
        this.s = s;
    }

    public void registerItem(String name, double price) {
        s.getStock().add(new Item(setItemCode(), name, price, 0));
    }

    private int setItemCode() {
        return s.getStock().size() + 1;
    }
}

然后,您最初编写的测试代码只需稍加修改ItemRegister i = new ItemRegister(s);即可成立,并且您可以处理 Stock 对象的一个​​实例。

关于java - 从另一个类添加到对象 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54412282/

相关文章:

java - 为什么数组的元素必须在方法内定义?

java - arraylist 中的重复项不被打印

java - 在 Java 中从 WebService 返回一个 ArrayList

java - 使用 for 每个循环来打印对象

java - 期待 JUnit 的异常不起作用

java - 如何对复杂类进行 Java 单元测试

java - 将新 fragment 添加到 FrameLayout 会产生 IllegalStateException

java - Sonar 如何成功运行单元测试

java - Spring 启动 : Use Hibernate Session in a unit test

java - 创建具有动态长度的整数数组时无法显示数组