use mockito framework to create UT(单元测试)
after Maven project has been created.
let's use the mockito to create some UT.
create several files below in the src/main/java folder:
create a class :
public class User {
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String id;
private String name;
private Integer age;
// getter,setter
}
create two interface:
public interface UserDao {
User insertUser(User user);
void deleteUser(User user);
}
public interface UserService {
User insertUser(User user);
void deleteUser(User user);
}
create a class file:
public class UserServiceImpl implements UserService {
private UserDao userDao;
public UserServiceImpl() {}
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
public User insertUser(User user) {
return userDao.insertUser(user);
}
public void deleteUser(User user) {
userDao.deleteUser(user);
}
}
create testfile below in the src/test/java folder:
// 在开发中有接口UserDao但是没有实现,因此UserService里面的userDao属性也是没有实现的,
// 模拟Spring给UserService里面的userDao注入一个实现,实际上没有注入,而仅仅是mock了一个userDao
// 在userService调用insertUser(User user)方法的时候就能模拟实现
// 当然这里仅仅mock了方法调用返回,还有mock异常,验证调用次数等
// 从整个来讲,这个框架是十分简单易用功能强大的,这里的简单是指使用简单,框架本身是相当复杂的
import static org.junit.Assert.*;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
public class UserServiceTest {
private UserService userService;
@Test
public void insertUserTest() {
// pojo对象
User user = new User();
user.setId("123");
user.setName("Jay");
user.setAge(100);
// mock一个userDao对象,本来是不存在的
UserDao userDao = Mockito.mock(UserDao.class);
Mockito.when(userDao.insertUser(user)).thenReturn(user);
//User u = userDao.insertUser(user);
// 这里模拟Spring给userService注入userDao
userService = new UserServiceImpl(userDao);
User us = userService.insertUser(user);
// 测试结果ok
assertEquals(us, user);
}
}
浙公网安备 33010602011771号