मैं वर्तमान में मॉकिटो फ्रेमवर्क का अध्ययन कर रहा हूं और मैंने मॉकिटो का उपयोग करके कई परीक्षण केस बनाए हैं। लेकिन फिर मैंने पढ़ा है कि बजाय नकली (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
}
जैसा कि मैंने कहा - यह बहुत अच्छा काम है। लेकिन निम्नलिखित अभ्यस्त:
@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
वर्ग है?
पहली नज़र में, मेरे लिए ठीक दिखता है। आपके लिए वास्तव में क्या गलत हो रहा है? –
@NOM क्या आप वाकई सही आयात का उपयोग कर रहे हैं? – Brice
डेविड - मुझे एक NullPointerException मिल रहा है। और ब्राइस, मेरा मानना है कि मैं सही आयात का उपयोग कर रहा हूं - यहां वे 'import org.jmock.auto.Mock; आयात org.junit.runner.RunWith; आयात org.mockito.InjectMocks; आयात org.mockito.MockitoAnnotations; आयात org.mockito.runners.MockitoJUnitRunner; ' – Noam