junit--stub

1.按照如下格式编写代码 


UserServiceImpl.java

package com.qunar.service.impl;

import com.qunar.dao.IUserDAo;
import com.qunar.dao.impl.UserDAOImpl;
import com.qunar.model.User;
import com.qunar.model.UserException;
import com.qunar.service.IUserService;

public class UserServiceImpl implements IUserService {

	private IUserDAo userDAo;

	public UserServiceImpl() {
		userDAo = new UserDAOImpl();
	}

	public UserServiceImpl(IUserDAo userDAo) {
		super();
		this.userDAo = userDAo;
	}

	public void add(User user) {
 		if (loader(user.getUsername())!=null) {
			throw new UserException("用户名已经存在");
		}
 		userDAo.add(user);
	}

	@Override
	public void delete(String username) {
		if(username.equals("superadmin")){
			return ;
		}
		userDAo.delete(username);
	}

	@Override
	public User loader(String username) {
		return userDAo.load(username);
	}

	@Override
	public User login(String username, String password) {
		User user = loader(username);
		if(user==null){
			throw new UserException("用户名不存在");
		}
		if(user.getPassword()!= password){
			throw new UserException("用户密码不正确");
		}
		return user;
	}

}
2.UserStubDAOImpl.java (表示桩)
package com.qunar.dao.impl;

import java.util.Map;

import com.google.common.collect.Maps;
import com.qunar.dao.IUserDAo;
import com.qunar.model.User;

public class UserStubDAOImpl implements IUserDAo {
	private Map<String, User> map = Maps.newHashMap();
	@Override
	public void add(User user) {
		map.put(user.getUsername(), user);
	}

	@Override
	public void delete(String username) {
	   map.remove(username);
	}

	@Override
	public User load(String username) {
		return map.get(username);
	}

}

3.TestUserService.java

package com.qunar.service;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

import com.qunar.dao.impl.UserStubDAOImpl;
import com.qunar.model.User;
import com.qunar.model.UserException;
import com.qunar.service.impl.UserServiceImpl;

public class TestUserService {
	private IUserService us;
	private User baseUser;

	@Before
	public void setUp() {
		// init
		us = new UserServiceImpl(new UserStubDAOImpl());
		baseUser = new User("admin", "123", "管理员");
	}

	@Test
	public void testAdd() {
		User user = baseUser;
		us.add(user);
		User user2 = us.loader("admin");
		assertNotNull(user2);
		assertTrue(user.getUsername().equals(user2.getUsername()));
	}

	@Test
	public void testDelete() {
		us.add(baseUser);
		User tUser = us.loader(baseUser.getUsername());
		assertNotNull(tUser);
		us.delete(baseUser.getUsername());
		tUser = us.loader(baseUser.getUsername());
		assertNull("删除的用户还存在", tUser);
	}

	@Test
	public void testLogin() {
		us.add(baseUser);
		String username = "admin";
		String password = "123";
		User user = us.login(username, password);
		assertTrue(user.equals(baseUser));
	}

	@Test(expected = UserException.class)
	public void testNotExistsUserLogin() {
		us.add(baseUser);
		String username = "admin1";
		String password = "123";
		us.login(username, password);
	}

	@Test(expected = UserException.class)
	public void testPasswordErrorUserLogin() {
		us.add(baseUser);
		String username = "admin";
		String password = "1234";
		us.login(username, password);
	}

	@Test(expected = UserException.class)
	public void testAddExistUser() {
		us.add(baseUser);
		us.add(baseUser);
		us.add(new User("admin", "123", "123"));
	}
}

setUp中

us = new UserServiceImpl(new UserStubDAOImpl());
这样用map来模拟可以完成数据库的隔离。stub 是基于状态的对象
这样测试全部通过





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值