我目前正在研究Mockito框架,并使用Mockito创建了多个测试用例。 但后来我读到的不是调用模拟(SomeClass的的.class)我可以使用@Mock
和@InjectMocks
- 我需要做的唯一一件事情就是我的注释测试类@RunWith(MockitoJUnitRunner.class)
或@Before
方法使用MockitoAnnotations.initMocks(this);
。使用@Mock和@InjectMocks
但它不起作用 - 看起来@Mock
不起作用! 这里是我的2代码修订 - 一个使用注释和一个没有。
我在做什么错?
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;
}
}
我缺少什么?
看起来没给我,乍一看。到底什么地方出了问题? – 2012-01-31 08:14:10
@Noam您确定您使用正确的导入吗? – Brice 2012-01-31 08:49:58
大卫 - 我得到一个NullPointerException。和布赖斯,我相信我使用正确的进口 - 在这里他们'进口org.jmock.auto.Mock; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.MockitoAnnotations; import org.mockito.runners.MockitoJUnitRunner;' – Noam 2012-02-01 08:45:35