例如,当您尝试使用其中一种方法更新或删除方法并传递null参数时,如果我们有一个保存或更新数据库示例的方法是我的更新购物车方法
public ShoppingCart updateShoppingCart(ShoppingCart shoppingCart) throws AccessDeniedException
{
BigDecimal cartTotal = new BigDecimal(0);
List<CartItem> cartItemList = cartItemRepository.findByShoppingCart(shoppingCart);
for (CartItem cartItem : cartItemList) {
if (cartItem.getBook().getInStockNumber() > 0) {
cartTotal = cartTotal.add(cartItem.getSubTotal());
}
}
shoppingCart.setGrandTotal(cartTotal);
shoppingCartRepository.save(shoppingCart);
return shoppingCart;
}
例如,如果我们因为此方法的参数为null或其他一些错误或异常而无法保存,我们如何添加一个单元测试来检查这个?
目前我的单元测试是这样的,如何进行错误和异常测试?
@Test
public void updateShoppingCartTest() throws Exception {
ShoppingCart shoppingCart = new ShoppingCart();
// objects instance here
List<CartItem> cartItemList = Arrays.asList(cartItem1, cartItem2);
when(cartItemRepository.findByShoppingCart(shoppingCart)).thenReturn(cartItemList);
for (CartItem cartItem : cartItemList) {
if (cartItem.getBook().getInStockNumber() > 0) {
cartTotal = cartTotal.add(cartItem.getSubTotal());
}
}
shoppingCart.setGrandTotal(cartTotal);
when(shoppingCartRepository.save(shoppingCart)).thenReturn(shoppingCart);
ShoppingCart cart = shoppingCartService.updateShoppingCart(shoppingCart);
Assert.assertNotNull(cart);
Mockito.verify(cartItemRepository).findByShoppingCart(shoppingCart);
Mockito.verify(shoppingCartRepository).save(shoppingCart);
}
任何帮助或建议?
答案 0 :(得分:0)
你有不同的方法,我喜欢使用ExpectedException
规则,允许我显示我期待的异常以及带有该规则的消息。
在这里您可以找到更多信息
https://github.com/junit-team/junit4/wiki/exception-testing#expectedexception-rule