Ich habe ein Problem, in dem die Feld-Injektion passend für Mockito @Mock
Annotation für @InjectMocks
funktioniert nicht in dem Fall, wo es 2 @Mock
s des gleichen Typs sind. Ich habe die @Mock (name = "name_of_var")
Syntax als auch verwendet, aber es noch immer nicht ...Warum kann ich den @InjectMocks-Feldvergleich bei der Ausführung mit PowerMockRunner nicht verwenden?
Hier ist die Klasse unter Test:
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;
}
Hier ist der Test selbst:
@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());
}
Wenn getestet , beide assertEquals
verursachen eine NullPointerException
aufgrund der Tatsache, dass die @InjectMocks
nicht funktioniert.
Jetzt, als ich @RunWith(PowerMockRunner.class)
durch @RunWith(MockitoJUnitRunner.class)
ersetzte, funktioniert es gut. Auch
, wenn ich nur 1 Date
Variable definiert hatte (etwa dateA
) in Parent.java
und eine passende mock zu injizieren in ParentTest
, wäre es zu injizieren ganz gut PowerMockRunner.class
verwenden.
Der Grund, warum ich mit PowerMockRunner.class laufen muss, ist, weil ich in der Lage sein muss, statische Funktionen sowie Konstruktoren zu verspotten.
Ich bin mit Junit4.12, Mockito-all-1.10.19 und PowerMock-Mockito-1.6.2-voll.
Hat jemand die Ursache dafür, warum es nicht richtig mit PowerMockRunner.class
injiziert? Gibt es eine Problemumgehung während der Ausführung mit PowerMockRunner.class
?