Ich habe eine Methode in der Klasse AppleProcessor
, die ich testen möchte:
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?
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.
Ihr Mock-Objekt wurde von Mockito verbessert und es ist nicht dasselbe wie Ihre Klasse, daher können Sie nicht Cast eingeben.