Wie zum Hohn Eine Schnittstelle Java PowerMockito
Ich m versuchen, zu verspotten, eine Schnittstelle.
public interface FlowCopyParamsBusinessManager {
List<FlowCopyParams> findByAppli(String application, String sourcePattern)
throws FlowCopyParamsBusinessException;
}
In meinem code, wenn ich diese Methode aufrufen, findByAppli, würde ich mag, um eine Liste der FlowCopyParams.
List<FlowCopyParams> lstFlowCopyParams = flowCopyParamsBusinessManager.findByAppli(
"TOTO","TATA);
Hier meine versuche in der Klasse-test:
@BeforeClass
public static void mockBeanIn() throws Exception {
List<FlowCopyParams> flowCopyParamsList = new ArrayList<>();
PowerMockito.spy(FlowCopyParamsBusinessManager.class);
PowerMockito.when(FlowCopyParamsBusinessManager.class, "findByAppli", Mockito.anyString(), Mockito.anyString()).thenReturn(flowCopyParamsList);
}
Habe ich diese Fehlermeldung :
java.lang.IllegalArgumentException: object is not an instance of declaring class
Ich weiß nicht, warum, weil die Methode findByAppli muss zwei string-Parameter, und ich habe Mockito.anyString() und ich habe noch IllegalArgumentException.
Keine Ahnung ?
Thxs.
InformationsquelleAutor Kikou | 2016-09-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht zu verwenden PowerMockito, und als eine Schnittstelle, es gibt keine Notwendigkeit, spy (), da Sie sich auf keine nicht verspottet Logik.
Es getan werden kann, wie dies in der test-Klasse die Definition einer Klasse variable.
In einem
@Before
annotierten Methode:Dann finden Sie
flowCopyParamsBusinessManagerMock
in Ihren tests.Spy ermöglicht Ihnen die Nutzung von teilen (Methoden) der ursprüngliche konkrete Umsetzung des Objekts in der Erwägung, dass mock nicht von der original-Implementierung.
InformationsquelleAutor UserF40
Meinem test nicht funktioniert hat, da ich versucht hatte, Sie zu bespitzeln die Klasse und nicht die Instanz FlowCopyParamsBusinessManager.class .
Zuerst erzeugen wir das mock :
Dann , Spion zum Beispiel :
Es funktioniert so gut !
Mockito cannot mock this class: class org.springframework.security.core.Authentication$$EnhancerByMockitoWithCGLIB$$95622b34 Mockito can only mock visible & non-final classes.
InformationsquelleAutor Kikou
Ich Tat dies, legte das @RunWith(PowerMockRunner.class) an der Spitze der Klasse. dann mock-Objekt mit PowerMockito.mock(MyMock.class); auf Diese Weise verwenden, können Sie ein mock-Schnittstelle oder final-Klassen.
InformationsquelleAutor abhishek ringsia