junit4的mock测试带抛出异常service方法实例

serviceImpl方法:
(PS: 方法不是我写的, 我只管测试)

 @Override
    public boolean returnBookCheck(String userId, String bookId) throws MyException {
        List<User> user = userDao.findUserByIdInRental(userId);
        List<Book> book = bookDao.findBookByIdInRental(bookId);
        if (user.size() == 0) {
            throw new MyException("此用户并没有借过书哦");
        }
        if (book.size() == 0) {
            throw new MyException("没借过这本书哦");
        }
        int i = bookDao.deleteBorrowLog(userId, bookId);
        if (i >= 1) {
            int j = bookDao.quantityAdd(bookId);
            return j >= 1;
        }
        return false;
    }

测试代码ServiceImplTest:

@Test
    public void returnBookCheckForTrue() throws MyException {
        Book book1 = new Book();
        book1.setBookId("BookId1");
        book1.setBookName("BookName1");
        book1.setAuthorName("AuthorName1");
        book1.setEducationName("EducationName1");
        book1.setQuantity(5);
        Book book2 = new Book();
        book2.setBookId("BookId2");
        book2.setBookName("BookName2");
        book2.setAuthorName("AuthorName2");
        book2.setEducationName("EducationName2");
        book2.setQuantity(7);
        List<Book> bookList = new ArrayList<>();
        bookList.add(book1);
        bookList.add(book2);
        User user1 = new User();
        user1.setDescription("111");
        user1.setBirthday(new Date().toString());
        user1.setUserName("User1");
        user1.setPassword("password1");
        user1.setUserId(111);
        User user2 = new User();
        user2.setDescription("222");
        user2.setBirthday(new Date().toString());
        user2.setUserName("User2");
        user2.setPassword("password2");
        user2.setUserId(222);
        List<User> userList = new ArrayList<>();
        userList.add(user1);
        userList.add(user2);
        MockUp<BookDao> bookDao = new MockUp<BookDao>() {
            @Mock
            List<Book> findBookByIdInRental(@Param("bookId") String bookId) {
                return bookList;
            }

            @Mock
            int deleteBorrowLog(@Param("userId") String userId, @Param("bookId") String bookId) {
                return 1;
            }

            @Mock
            int quantityAdd(@Param("bookId") String bookId) {
                return 1;
            }
        };
        MockUp<UserDao> userDaoMockUp = new MockUp<UserDao>() {
            @Mock
            List<User> findUserByIdInRental(@Param("userId") String userId) {
                return userList;
            }
        };


        new Expectations() {
            {
                Deencapsulation.setField(bookServiceImpl, "bookDao", bookDao.getMockInstance());
                Deencapsulation.setField(bookServiceImpl, "userDao", userDaoMockUp.getMockInstance());
            }
        };
        boolean result = bookServiceImpl.returnBookCheck(null, null);
            assertTrue(result);
    }

    @Test
    public void returnBookCheckForISmallerThanOne() throws MyException {
        Book book1 = new Book();
        book1.setBookId("BookId1");
        book1.setBookName("BookName1");
        book1.setAuthorName("AuthorName1");
        book1.setEducationName("EducationName1");
        book1.setQuantity(5);
        Book book2 = new Book();
        book2.setBookId("BookId2");
        book2.setBookName("BookName2");
        book2.setAuthorName("AuthorName2");
        book2.setEducationName("EducationName2");
        book2.setQuantity(7);
        List<Book> bookList = new ArrayList<>();
        bookList.add(book1);
        bookList.add(book2);
        User user1 = new User();
        user1.setDescription("111");
        user1.setBirthday(new Date().toString());
        user1.setUserName("User1");
        user1.setPassword("password1");
        user1.setUserId(111);
        User user2 = new User();
        user2.setDescription("222");
        user2.setBirthday(new Date().toString());
        user2.setUserName("User2");
        user2.setPassword("password2");
        user2.setUserId(222);
        List<User> userList = new ArrayList<>();
        userList.add(user1);
        userList.add(user2);
        MockUp<BookDao> bookDao = new MockUp<BookDao>() {
            @Mock
            List<Book> findBookByIdInRental(@Param("bookId") String bookId) {
                return bookList;
            }

            @Mock
            int deleteBorrowLog(@Param("userId") String userId, @Param("bookId") String bookId) {
                return 0;
            }

            @Mock
            int quantityAdd(@Param("bookId") String bookId) {
                return 1;
            }
        };
        MockUp<UserDao> userDaoMockUp = new MockUp<UserDao>() {
            @Mock
            List<User> findUserByIdInRental(@Param("userId") String userId) {
                return userList;
            }
        };


        new Expectations() {
            {
                Deencapsulation.setField(bookServiceImpl, "bookDao", bookDao.getMockInstance());
                Deencapsulation.setField(bookServiceImpl, "userDao", userDaoMockUp.getMockInstance());
            }
        };
        boolean result = bookServiceImpl.returnBookCheck(null, null);
        assertTrue(!result);
    }

    @Test
    public void returnBookCheckForBookError() throws MyException {
        boolean thrown = false;
        List<Book> bookList = new ArrayList<>();
        User user1 = new User();
        user1.setDescription("111");
        user1.setBirthday(new Date().toString());
        user1.setUserName("User1");
        user1.setPassword("password1");
        user1.setUserId(111);
        User user2 = new User();
        user2.setDescription("222");
        user2.setBirthday(new Date().toString());
        user2.setUserName("User2");
        user2.setPassword("password2");
        user2.setUserId(222);
        List<User> userList = new ArrayList<>();
        userList.add(user1);
        userList.add(user2);
        MockUp<BookDao> bookDao = new MockUp<BookDao>() {
            @Mock
            List<Book> findBookByIdInRental(@Param("bookId") String bookId) {
                return bookList;
            }

            @Mock
            int deleteBorrowLog(@Param("userId") String userId, @Param("bookId") String bookId) {
                return 0;
            }

            @Mock
            int quantityAdd(@Param("bookId") String bookId) {
                return 1;
            }
        };
        MockUp<UserDao> userDaoMockUp = new MockUp<UserDao>() {
            @Mock
            List<User> findUserByIdInRental(@Param("userId") String userId) {
                return userList;
            }
        };


        new Expectations() {
            {
                Deencapsulation.setField(bookServiceImpl, "bookDao", bookDao.getMockInstance());
                Deencapsulation.setField(bookServiceImpl, "userDao", userDaoMockUp.getMockInstance());
            }
        };
        try {
            boolean result = bookServiceImpl.returnBookCheck(null, null);
        } catch (MyException e) {
            thrown = true;
        }
        assertTrue(thrown);
    }

    @Test
    public void returnBookCheckForUserError() throws MyException {
        boolean thrown = false;
        List<Book> bookList = new ArrayList<>();
        List<User> userList = new ArrayList<>();
        MockUp<BookDao> bookDao = new MockUp<BookDao>() {
            @Mock
            List<Book> findBookByIdInRental(@Param("bookId") String bookId) {
                return bookList;
            }

            @Mock
            int deleteBorrowLog(@Param("userId") String userId, @Param("bookId") String bookId) {
                return 0;
            }

            @Mock
            int quantityAdd(@Param("bookId") String bookId) {
                return 1;
            }
        };
        MockUp<UserDao> userDaoMockUp = new MockUp<UserDao>() {
            @Mock
            List<User> findUserByIdInRental(@Param("userId") String userId) {
                return userList;
            }
        };
        new Expectations() {
            {
                Deencapsulation.setField(bookServiceImpl, "bookDao", bookDao.getMockInstance());
                Deencapsulation.setField(bookServiceImpl, "userDao", userDaoMockUp.getMockInstance());
            }
        };
        try {
            boolean result = bookServiceImpl.returnBookCheck(null, null);
        } catch (MyException e) {
            thrown = true;
        }
        assertTrue(thrown);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值