मैंने एक समस्या में भाग लिया है जिसमें @InjectMocks
के लिए मॉकिटो के @Mock
एनोटेशन के लिए फ़ील्ड इंजेक्शन मिलान उस मामले में काम नहीं कर रहा है जहां 2 @Mock
एक ही प्रकार के हैं। मैं @Mock (name = "name_of_var")
वाक्य रचना का उपयोग किया है और साथ ही, लेकिन यह अभी भी विफल रहा है ...PowerMockRunner के साथ चलते समय मैं @InjectMocks फ़ील्ड मिलान का उपयोग क्यों नहीं कर सकता?
यहाँ परीक्षण के अंतर्गत वर्ग है:
@RunWith(PowerMockRunner.class)
@PrepareForTest({System.class, Parent.class})
public class testParent{
@Mock (name = "dateB") private Date someOtherDate;
@Mock (name = "dateA") private Date someDate;
@InjectMocks Parent p;
@Before
public void setup(){
Mockito.when(someOtherDate.getTime()).thenReturn(500l);
PowerMockito.mockStatic(System.class);
PowerMockito.when(System.currentTimeMillis()).thenReturn(2000l);
}
@Test
public void testGetDateAGetTimeShouldReturn1000() {
Mockito.when(someDate.getTime()).thenReturn(1000l);
Date result = p.getDateA();
assertEquals(1000l, result.getTime());
}
@Test
public void testGetDateBGetTimeShouldReturn500() {
Date result = p.getDateB();
assertEquals(500l, result.getTime());
}
जब परीक्षण किया:
import java.util.Date;
public class Parent{
private Date dateA;
private Date dateB;
public void setDateA(Date _dateA){
dateA = _dateA;
}
public void setDateB(Date _dateB){
dateB = _dateB;
}
public Date getDateA(){
return dateA;
}
public Date getDateB(){
return dateB;
}
यहाँ परीक्षण ही है assertEquals
दोनों इस तथ्य के कारण @InjectMocks
काम नहीं करता है।
अब, जब मैंने को @RunWith(MockitoJUnitRunner.class)
के साथ बदल दिया, तो यह ठीक काम करता है।
इसके अलावा, अगर मैं सिर्फ 1 Date
Parent.java
में चर (जैसे कि, dateA
) और मेल खाता हुआ नकली ParentTest
में इंजेक्षन करने के लिए परिभाषित किया था, तब भी वह अच्छे PowerMockRunner.class
का उपयोग कर डालेगी।
मुझे PowerMockRunner.class के साथ चलने का कारण यह है क्योंकि मैं स्थिर कार्यों के साथ-साथ कन्स्ट्रक्टरों का नकल करने में सक्षम होना चाहिए।
मैं जूनिट 4.12, मॉकिटो-ऑल-1.10.1 9, और पावरमैक-मॉकिटो-1.6.2-पूर्ण के साथ चल रहा हूं।
क्या कोई इस कारण को देखता है कि यह PowerMockRunner.class
के साथ ठीक से इंजेक्ट क्यों नहीं करता है? PowerMockRunner.class
के साथ चलते समय इसके लिए कोई कामकाज है?