在需要Mock的属性上标记@Mock注解,然后@RunWith中配置Mockito的TestRunner或者在setUp()方法中显示调用MockitoAnnotations.initMocks(this);生成Mock类即可。
2自动注入Mock类到被测试类
只要在被测试类上标记@InjectMocks,Mockito就会自动将标记@Mock、@Spy等注解的属性值注入到被测试类中。
[java]
import static org.mockito.Mockito.when;
import java.util.Collections;
import java.util.List;
import javax.annotation.Resource;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
importorg.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.cdai.ssi.user.dao.UserDao;
import com.cdai.ssi.user.domain.UserDomain;
import com.cdai.ssi.user.dto.UserDto;
importcom.cdai.ssi.user.service.UserService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring/spring-config.xml"})
public class UserServiceTest {
@InjectMocks
@Resource(name= "userService")
privateUserService userService;
@Mock
privateUserDao userDao;
@Before
publicvoid setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
publicvoid testQueryAll() {
when(userDao.selectAll()).
thenReturn(Collections.emptyList());
List
dtoList = userService.queryAll();
Assert.assertTrue(dtoList.isEmpty());
}
}
import static org.mockito.Mockito.when;
import java.util.Collections;
import java.util.List;
import javax.annotation.Resource;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
importorg.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.cdai.ssi.user.dao.UserDao;
import com.cdai.ssi.user.domain.UserDomain;
import com.cdai.ssi.user.dto.UserDto;
importcom.cdai.ssi.user.service.UserService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring/spring-config.xml"})
public class UserServiceTest {
@InjectMocks
@Resource(name= "userService")
privateUserService userService;
@Mock
privateUserDao userDao;
@Before
publicvoid setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
publicvoid testQueryAll() {
when(userDao.selectAll()).
thenReturn(Collections.emptyList());
ListdtoList = userService.queryAll();
Assert.assertTrue(dtoList.isEmpty());
}
}
@InjectM