【发布时间】:2019-01-29 09:17:04
【问题描述】:
我有一个名为 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。
【问题讨论】:
-
您认为您的
s对象与您的i对象有任何关系吗?为什么或为什么不? -
只检查 i 而不是 s:
assertTrue(i.getStock().size() == 1); -
@SotiriosDelimanolis 不是真的。因为我正在实例化一个新对象
-
将
s更改为i就像这样 assertTrue(i.getStock().size() == 1);s有零个元素。 -
嗨 @SergeiSirik 稍后我想尝试做一个销售课程,我想从 Stock 咨询,但它没有添加我想要的方式