我目前正在研究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