2017-02-02 2 views
4

Während Lernen Mockito ich zwei verschiedene Anmerkungen @TestSubject und @InjectMocks bei unter Referenzen gefunden.
@TestSubject Ref
@InjectMocks Ref

@InjectMocks Anmerkung arbeitet absolut in Ordnung, wie in Tutorial erklärt aber @TestSubject vielmehr seine Anzeige von Fehler nicht funktioniert.
Ich erhalte TestSubject cannot be resolved to a type Fehler für @TestSubject Anmerkung im Snippet Code jedoch habe ich richtige Setup abgeschlossen (einschließlich Junit & Mockito JAR-Dateien in dem Build-Pfad).Unterschied zwischen @TestSubject und @InjectMocks?

import org.junit.Assert; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.InjectMocks; 
import org.mockito.Mock; 
import org.mockito.Mockito; 
import org.mockito.runners.MockitoJUnitRunner; 

import com.infosys.junitinteg.action.MathApplication; 
import com.infosys.junitinteg.service.CalculatorService; 

@RunWith(MockitoJUnitRunner.class) 
public class MathApplicationTester { 

    // @TestSubject annotation is used to identify class which is going to use 
    // the mock object 
    @TestSubject 
    MathApplication mathApplication = new MathApplication(); 

    // @Mock annotation is used to create the mock object to be injected 
    @Mock 
    CalculatorService calcService; 

    @Test(expected = RuntimeException.class) 
    public void testAdd() { 
     // add the behavior to throw exception 
     Mockito.doThrow(new RuntimeException("Add operation not implemented")).when(calcService).add(10.0, 20.0); 

     // test the add functionality 
     Assert.assertEquals(mathApplication.add(10.0, 20.0), 30.0, 0); 
    } 
} 

Ich habe zwei Fragen hier.
1. Hat jemand ein ähnliches Problem festgestellt? Wenn ja, was war die Ursache und Lösung?
2. Wenn es funktioniert, was ist der Unterschied zwischen @TestSubject und @InjectMocks Annotationen?

+2

Ich kann wirklich keinen Beweis finden, dass diese Anmerkung tatsächlich als Teil von Mockito existiert. Das Lernprogramm, zu dem Sie eine Verknüpfung erstellen, definiert nicht einmal eine Importanweisung dafür. Scheint wie ein Tippfehler für mich und es sollte zum Beispiel "@ Spy" gewesen sein. – Gimby

Antwort

6

@TestSubject ist die Annotation von EasyMock, die dasselbe tut wie Mockitos @InjectMocks. Wenn Sie Mockito verwenden, müssen Sie @InjectMocks verwenden.