junit4的mock测量带抛出较为service过程实例
原创serviceImpl方法:
(PS: 我没有写这个方法, 我只是测试)
@Override
public boolean returnBookCheck(String userId, String bookId) throws MyException {
List user = userDao.findUserByIdInRental(userId);
List 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 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 userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
MockUp bookDao = new MockUp() {
@Mock
List 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 userDaoMockUp = new MockUp() {
@Mock
List 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 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 userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
MockUp bookDao = new MockUp() {
@Mock
List 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 userDaoMockUp = new MockUp() {
@Mock
List 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 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 userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
MockUp bookDao = new MockUp() {
@Mock
List 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 userDaoMockUp = new MockUp() {
@Mock
List 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 bookList = new ArrayList<>();
List userList = new ArrayList<>();
MockUp bookDao = new MockUp() {
@Mock
List 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 userDaoMockUp = new MockUp() {
@Mock
List 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);
}
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除