현재 Mockito 프레임 워크를 연구 중이며 Mockito를 사용하여 몇 가지 테스트 사례를 만들었습니다. 내가해야 할 유일한 것은 @RunWith(MockitoJUnitRunner.class)
내 테스트 클래스에 주석 또는 @Before
방법에 MockitoAnnotations.initMocks(this);
을 사용하는 것입니다 - 그러나 그 다음 내가 대신 모의 (SomeClass의 .class)를 호출하는 나는 @Mock
과 @InjectMocks
을 사용할 수 있습니다 읽어 보시기 바랍니다.@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
}
내가 말했듯이 -이 작업은 훌륭합니다. 는 그러나 다음과 같은 습관 :
@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;
}
}
내가 무엇을 놓치고 : 여기
@RunWith(MockitoJUnitRunner.class)
public class ReportServiceImplTestMockito {
@Mock
private TaskService mockTaskService;
@InjectMocks
private ReportServiceImpl service;
// Some tests
}
그리고는 ReportServiceImpl
클래스?
언뜻보기에 나에게 잘 보입니다. 정확히 뭐가 잘못 됐어? –
@Noam 올바른 수입을 사용하고 있습니까? – Brice
David - NullPointerException이 발생합니다. 그리고 Brice, 저는 올바른 수입을 사용하고 있다고 믿습니다. 여기에 'import org.jmock.auto.Mock; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.MockitoAnnotations; import org.mockito.runners.MockitoJUnitRunner; ' – Noam