2016-11-10 3 views
1

Ich benutze Mockito, um meine Dienste zu verspotten.Wie man Mockito in der Elternklasse mit Mockito injiziert?

Wie kann ich Mocks in Elternklasse injizieren?

Probe:

public abstract class Parent(){ 

    @Mock 
    Message message; 

} 

public class MyTest() extends Parent{ 

    @InjectMocks 
    MyService myService //MyService has an instance of Message 

    //When I put @Mock Message here it works 
} 

Als ich betreibe meine Tests die Nachricht in Parent Aufenthalt null

+0

Mocks können über Konstruktor injiziert werden. Wenn DI dann Architektur die Klassen, um Abhängigkeiten durch Konstruktor Injektion bekommen – Nkosi

+0

Welche Mockito-Version verwenden Sie? – SpaceTrucker

+0

Die Version, die ich benutze, ist: 1.10.19 – Lucas

Antwort

1

Zwei Möglichkeiten, dieses Problem zu lösen:

1) Sie müssen MockitoAnnotations.initMocks(this) im @Before Methode verwenden, in Ihre Elternklasse.

Die folgenden Werke für mich:

public abstract class Parent { 
    @Mock 
    Message message; 

    @Before 
    public void initMocks() { 
     MockitoAnnotations.initMocks(this); 
    } 
} 

public class MyTest extends Parent { 
    @InjectMocks 
    MyService myService = new MyService(); //MyService has an instance of Message 
    ... 
} 

2) Wenn die @RunWith(MockitoJUnitRunner.class) oberhalb der Klassendefinition verwenden wollen, dann ist dies in der übergeordneten Klasse getan werden muss:

@RunWith(MockitoJUnitRunner.class) 
public class Parent { 
... 

Beachten Sie, dass zu erklären Die @Mock in beiden Parent und MyTest Klasse wird dazu führen, dass das injizierte Objekt null ist. Sie müssen also auswählen, wo Sie dies deklarieren möchten.

+0

Beide arbeiteten für mich .. danke – Lucas