junit--stub

来源:互联网 发布:程序员接项目的网站 编辑:程序博客网 时间:2024/06/14 03:28

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);}@Overridepublic void delete(String username) {if(username.equals("superadmin")){return ;}userDAo.delete(username);}@Overridepublic User loader(String username) {return userDAo.load(username);}@Overridepublic 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();@Overridepublic void add(User user) {map.put(user.getUsername(), user);}@Overridepublic void delete(String username) {   map.remove(username);}@Overridepublic 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;@Beforepublic void setUp() {// initus = new UserServiceImpl(new UserStubDAOImpl());baseUser = new User("admin", "123", "管理员");}@Testpublic void testAdd() {User user = baseUser;us.add(user);User user2 = us.loader("admin");assertNotNull(user2);assertTrue(user.getUsername().equals(user2.getUsername()));}@Testpublic void testDelete() {us.add(baseUser);User tUser = us.loader(baseUser.getUsername());assertNotNull(tUser);us.delete(baseUser.getUsername());tUser = us.loader(baseUser.getUsername());assertNull("删除的用户还存在", tUser);}@Testpublic 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 是基于状态的对象
这样测试全部通过





0 0
原创粉丝点击