User user = userDao.load(username);
if(null == user){
throw new RuntimeException("用户[" + username + "]不存在");
}
if(!user.getPassword().equals(password)){
throw new RuntimeException("用户[" + user.getUsername() + "]密码错误");
}
return user;
}
}
package com.jadyer.service.impl;
import com.jadyer.dao.BlogDao;
import com.jadyer.dao.UserDao;
import com.jadyer.model.User;
import com.jadyer.service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao;
private BlogDao blogDao;
public UserServiceImpl(){}
public UserServiceImpl(UserDao userDao){
this.userDao = userDao;
}
public UserServiceImpl(UserDao userDao, BlogDao blogDao){
this.userDao = userDao;
this.blogDao = blogDao;
}
@Override
public User get(String username) {
return userDao.load(username);
}
@Override
public User list(String username) {
userDao.load("http://blog.csdn.net/jadyer");
userDao.delete(username);
return userDao.load(username);
}
@Override
public void update(String username) {
blogDao.update(username);
userDao.delete(username);
}
@Override
public User insert(User user) {
if(null != userDao.load(user.getUsername())){
throw new RuntimeException("用户[" + user.getUsername() + "]已存在");
}
return userDao.save(user);
}
@Override
public User login(String username, String password) {
User user = userDao.load(username);
if(null == user){
throw new RuntimeException("用户[" + username + "]不存在");
}
if(!user.getPassword().equals(password)){
throw new RuntimeException("用户[" + user.getUsername() + "]密码错误");
}
return user;
}
}
最后是包含了EasyMock简单用法的测试用例
[java]
package com.jadyer.service;
import org.easymock.EasyMock;
import org.easymock.IMocksControl;
import org.junit.Assert;
import org.junit.Test;
import com.jadyer.dao.BlogDao;
import com.jadyer.dao.UserDao;
import com.jadyer.model.User;
import com.jadyer.service.UserService;
import com.jadyer.service.impl.UserServiceImpl;
/**
* @see --------------------------------------------------------------------------------------------------------------
* @see Mock简介
* @see mock和stub的区别:mock关注的是交互,主要解决的问题是对象之间的交互,而stub关注的是状态
* @see EasyMock就是实现Mock对象的框架,Mock对象是用来对一些未实现关联对象的类进行测试的对象
* @see EasyMock框架在使用时只需要一个easymock-3.1.jar
* @see 下载地址为http://sourceforge.net/projects/easymock/files/
* @see --------------------------------------------------------------------------------------------------------------
* @see Mock生命周期
* @see 比如说UserService依赖于UserDao,如果UserDao没有实现,我们可以通过Mock来模拟UserDao的实现
* @see 1)record-->记录UserDao可能会发生的操作的结果,并记录下所有交互过程
* @see 2)replay-->创建UserServiceImpl和UserDao的关联并完成测试
* @see 3)verify-->验证交互关系是否正确
* @see --------------------------------------------------------------------------------------------------------------
* @see Mock创建方式
* @see 1)createMock-------->此时创建的mock对象在进行verify时仅仅检查关联方法是否正常完成调用,只要完成次数一致就认为测试通过
* @see 2)createNiceMock---->很少使用,略掉
* @see 3)createStrictMock-->与createMock不同的是,它还要验证关联方法的调用顺序,即verify时要同时验证完成调用的次数和调用顺序
* @see --------------------------------------------------------------------------------------------------------------
* @see 小