使用@Mock和@InjectMocks
我目前正在研究Mockito框架,我已经使用Mockito创建了几个测试用例。但后来我读到,我可以使用 and the - 我唯一需要做的就是用和来注释我的测试类,而不是调用 mock(SomeClass.class),或者在方法中使用 the。@Mock
@InjectMocks
@RunWith(MockitoJUnitRunner.class)
MockitoAnnotations.initMocks(this);
@Before
但它不起作用 - 似乎不会起作用!这是我的2个代码修订版 - 一个使用注释,一个没有。@Mock
我做错了什么?
public class ReportServiceImplTestMockito {
private TaskService mockTaskService; // This is the Mock object
private ReportServiceImpl service;
@Before
public void init(){
service = new ReportServiceImpl();
mockTaskService = mock(TaskServiceImpl.class);
service.setTaskServiceImpl(mockTaskService);
}
/// ...
Some tests
}
正如我所说 - 这工作很棒。但以下情况不会:
@RunWith(MockitoJUnitRunner.class)
public class ReportServiceImplTestMockito {
@Mock
private TaskService mockTaskService;
@InjectMocks
private ReportServiceImpl service;
// Some tests
}
这是类:ReportServiceImpl
@Service
public class ReportServiceImpl implements ReportService {
@Autowired
private TaskService taskServiceImpl;
public ReportServiceImpl(){}
public ReportServiceImpl(TaskService taskService){
this.taskServiceImpl = taskService;
}
public void setTaskServiceImpl(TaskService taskServiceImpl) {
this.taskServiceImpl = taskServiceImpl;
}
}
我错过了什么?