2017-01-03 4 views
-1

Hallo Leute, ich habe Probleme beim Erstellen eines Mock. Hier ist der Code:Erstellen Mock mit Mockito für Klasse, die generische Klasse erweitert

Die Klasse, die ich Mock versuche:

public class MyClass extends BaseClass<ClassView>{ 
    //code goes here 
} 

Im Test:

MyClass mockMyClass; 

@Test 
public void setUp(){ 
    mockMyClass = mock(MyClass.class); 
} 

auch versucht:

@Mock MyClass mockMyClass; 

@Test 
public void setUp(){ 
    MockitoAnnotations.initMocks(this) 
} 

Der Fehler:

org.mockito.exceptions.base.MockitoException: 
Mockito cannot mock this class: class com.packageName.MyClass 

Mockito can only mock non-private & non-final classes. 
If you're not sure why you're getting this error, please report to the mailing list. 

Ich denke, es gibt ein Problem beim Erstellen eines Mock für eine Klasse, die eine Klasse mit generischen Parametern erweitert. Kann mir jemand in die richtige Richtung zeigen?

+0

Können Sie die Anmerkungen Ihrer Testklasse zeigen? – rekire

+0

Können Sie alle tatsächlichen Fehler in Ihre Frage aufnehmen? –

+0

@JamesMcCracken hat die Frage mit dem Fehler aktualisiert – Aerim

Antwort

4

Sie haben vergessen, zwei obligatorische Anmerkungen Ihrer Testclass:

@RunWith(PowerMockRunner.class) 
@PrepareForTest({MyClass.class}) 
public class FirstTest { 
    MyClass mockMyClass; 

    @Test 
    public void setUp(){ 
     mockMyClass = mock(MyClass.class); 
    } 
} 

Ihr Test mit dem PowerMockRunner ausgeführt werden muss, und Sie müssen auch für Test alle Klassen, die Sie verspotten wollen vorzubereiten. Wenn Sie das im Hinterkopf behalten, wird es gut funktionieren :)

Verwandte Themen