为服务添加单位测试以进行例外和错误处理



例如,当您尝试使用其中一种方法更新或删除方法并传递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);
    }

有任何帮助或建议?

您有不同的方法,我喜欢使用ExpectedException规则,该规则允许我显示我期望的例外以及与该规则有关的消息。

在这里您可以找到更多信息

https://github.com/junit-team/junit4/wiki/wiki/exception-testing#extexpectexpection-rule

最新更新