2012-08-28 9 views
7

Ich verwende mockito-all-1.9.5-rc1.jar und powermock-mockito-1.4.12-full.jar. Wenn ich diesen einfachen Komponententest für spottend letzte Methode in nicht-finalen Klasse ausführen.NoClassDefFoundError für MockitoInvocationHandler Klasse

import static org.junit.Assert.assertEquals; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.powermock.api.mockito.PowerMockito; 
import org.powermock.core.classloader.annotations.PrepareForTest; 
import org.powermock.modules.junit4.PowerMockRunner; 

@RunWith(PowerMockRunner.class) 
@PrepareForTest(ABC.class) 
public class ABCTest { 

    @Test 
    public void finalCouldBeMock() { 
     final ABC abc = PowerMockito.mock(ABC.class); 
     PowerMockito.when(abc.myMethod()).thenReturn("toto"); 
     assertEquals("toto", abc.myMethod()); 
    } 

} 

Als ich lief es, ich habe java.lang.NoClassDefFoundError: org/mockito/internal/MockitoInvocationHandler Caused by: java.lang.ClassNotFoundException: org.mockito.internal.MockitoInvocationHandler

Als ich fo Klasse MockitoInvocationHandler in mockito-all-1.9.5-rc1.jar und powermock-mockito-1.4.12-full.jar suchen. Ich konnte keine finden. Brauchen Sie Hilfe bei diesem Problem! Danke

Antwort

15

Mockito 1.9.5-rc1 musste intern umgestaltet werden, um Dritten Mock Maker zu ermöglichen. MockitoInvocationHandler war Teil der Mockito Interna (wie der Paketname schon sagt) bis Mockito 1.9.0.

Aufgrund dieser Veränderungen, aktuellen einige ältere Version PowerMock veröffentlicht ab heute sind nicht kompatibel mit der neuesten Mockito Release.

Ein weiterer Grund zu vermeiden Finale oder Statik spöttischen/stubbing;)

Hoffnung, die Beifall hilft,

+0

Hallo Brice, die sehr geholfen. Vielen Dank. –

+0

Vielen Dank Brice jetzt ist mein Problem gelöst. :) –

+0

Sie sind herzlich willkommen :) – Brice