如果要对service层进行mock测试,首先需要解决的就是autowired的问题,因为在使用的时候,框架会帮我们解决对象创建的问题,所以我们一般不会预留构造函数,这就给我们mock带来了一点麻烦。还好,mockito提供了解决方案,就是利用@InjectMocks
注解:
@InjectMocks
- Instantiates testing object instance and tries to inject fields annotated with@Mock
or@Spy
into private fields of testing object
这个注解会把所有用@Mock
和@Spy
注解的属性注入到被标记的属性里。比如:
@RunWith(MockitoJUnitRunner.class)
public class UserServiceTest extends AbstractJUnit4SpringContextTests {
@Mock
private UserRegistry userDao;
@InjectMocks
private UserService userService;
}
@Service
public class UserService {