从另一个类添加到对象 ArrayList

我有一个名为 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 的类,它创建一个 ArrayList 的项目。


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;

}

我正在使用单元测试来查看我是否确实向 Stock 中添加了一个项目。


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。


哈士奇WWW
浏览 100回答 2
2回答

潇湘沐

从评论中,您可以做的可能是更改父子关系并让 ItemRegister 持有 Stock 对象的实例。因此,您可以像这样修改 ItemRegister 类:public class ItemRegister&nbsp; {&nbsp; &nbsp; Stock s;&nbsp; &nbsp; public ItemRegister(Stock s) {&nbsp; &nbsp; &nbsp; &nbsp; this.s = s;&nbsp; &nbsp; }&nbsp; &nbsp; public void registerItem(String name, double price) {&nbsp; &nbsp; &nbsp; &nbsp; s.getStock().add(new Item(setItemCode(), name, price, 0));&nbsp; &nbsp; }&nbsp; &nbsp; private int setItemCode() {&nbsp; &nbsp; &nbsp; &nbsp; return s.getStock().size() + 1;&nbsp; &nbsp; }}然后,您最初编写的测试代码只需稍作修改即可为真ItemRegister i = new ItemRegister(s);,并且您可以在 Stock 对象的一个实例上工作。

12345678_0001

我想要的是添加Stock而不是ItemRegister因为如果以后我想咨询Stock我会打电话给 Stock 而不是ItemRegister。然后你需要Stock换成ItemRegister.public class ItemRegister&nbsp; {&nbsp; &nbsp; Stock stock;&nbsp; &nbsp; public ItemRegister(Stock stock) {&nbsp; &nbsp; &nbsp; &nbsp; this.stock = stock;&nbsp; &nbsp; }&nbsp; &nbsp; public void registerItem(String name, double price) {&nbsp; &nbsp; &nbsp; &nbsp; stock.getStock().add(new Item(setItemCode(), name, price, 0));&nbsp; &nbsp; }&nbsp; &nbsp; private int setItemCode() {&nbsp; &nbsp; &nbsp; &nbsp; return stock.getStock().size() + 1;&nbsp; &nbsp; }}在您的单元测试中使用它,如下所示:public class ItemRegisterTest {&nbsp; &nbsp; @Test&nbsp; &nbsp; public void testIfHasRegisteredItemInStock() {&nbsp; &nbsp; &nbsp; &nbsp; Stock s = new Stock();&nbsp; &nbsp; &nbsp; &nbsp; assertTrue(s.getStock().size() == 0);&nbsp; &nbsp; &nbsp; &nbsp; ItemRegister i = new ItemRegister(s);&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; i.registerItem("Oleo", 20.0);&nbsp; &nbsp; &nbsp; &nbsp; assertTrue(s.getStock().size() == 1);&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java