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);
}