我已经实施了ShoppingCart
,其中CartItem
被放在Set
中以避免重复的项目。我想测试把物品放入购物车并坚持数据库,然后从购物车检索物品并检查它们是否相同。如何编写单元测试以检索来自java的项目设置
我试图做到这一点,但它看起来很丑。它只能用于单个项目。如果使用List
来存储CartItems
,问题将被解决。
class ShoppingCart{
private Set<CartItem> cartItems;
private User customer;
public ShoppingCart(User customer) {
super();
this.cartItems = new TreeSet<CartItem>();
this.customer = customer;
}
...
}
class CartItem{
private Product pdt;
private int quantity;
...
}
单元测试
User bob = getUserByName("bob");
CartItem citem1 = new CartItem(product1,3);
ShoppingCart cart = new ShoppingCart(bob);
cart.addItem(citem1);
cart.saveToDB();
ShoppingCart bobCart = getCartFromDbUsingCustomer(bob);
assertNotNull(bobCart);
Set<CartItem> bobCartItems = bobCart.getCartItems();
assertEquals(1,bobCartItems.size());
CartItem[] citems = bobCartItems.toArray(new CartItem[0]);
CartItem bobCartItem = citems[0];
assertEquals("978",bobCartItem.getProduct().getIsbn());
assertEquals(3,bobCartItem.getQuantity());
如果单个车项目被添加到cart.If两个或两个以上cartItems加入这只会工作,我将只能够当一些人retireve项目使用一种比较器。我有一种感觉,这是不正确的做法。
有什么建议吗?