Mockito ClassCastException - Ein Mock kann nicht gecastet werden

8

Ich habe eine Methode in der Klasse AppleProcessor , die ich testen möchte:

%Vor%

Beachten Sie, dass Fruit eine Schnittstelle zur Methode getType() ist, die von AppleFruit implementiert wird, und auch eine Methode getApple() hat.

Mein Test sieht so aus:

%Vor%

Ich bekomme jedoch den folgenden Fehler:

java.lang.ClassCastException: package.fruit.Fruit$$EnhancerByMockitoWithCGLIB$$b8254f54 cannot be cast to package.fruit.AppleFruit

das kommt aus dieser Zeile im Test

when(((AppleFruit) fruit).getApple()).thenReturn(apple);

Würde jemand wissen, wie man das löst, damit ich meinen Code testen kann?

    
user2844485 11.02.2015, 19:16
quelle

2 Antworten

23

Wenn Sie sagen

%Vor%

Sie sagen Mockito: Die fruit Variable sollte eine Instanz von Fruit sein. Mockito erstellt dynamisch eine Klasse, die Fruit implementiert (diese Klasse ist Fruit$$EnhancerByMockitoWithCGLIB$$b8254f54 ) und erstellt eine Instanz dieser Klasse. Es gibt keinen Grund für diese Klasse, eine Instanz von AppleFruit zu sein, da du Mockito nicht gesagt hast, dass das Objekt vom Typ AppleFruit sein muss.

Deklarieren Sie es als AppleFruit und es wird vom Typ AppleFruit sein.

    
JB Nizet 11.02.2015, 19:25
quelle
0

Ihr Mock-Objekt wurde von Mockito verbessert und es ist nicht dasselbe wie Ihre Klasse, daher können Sie nicht Cast eingeben.

    
Aninda Bhattacharyya 11.02.2015 19:24
quelle

Tags und Links