我在班上AppleProcessor
的方法,我想測試:的Mockito ClassCastException異常 - 一個模擬無法施展
public void process(Fruit fruit) {
if(fruit.getType() == Fruit.APPLE) {
fruitBasket.add(((AppleFruit) fruit).getApple());
}
else {
// do something else
}
}
注意,水果與方法getType()
這AppleFruit實現的接口,也有一個getApple()
方法。
我的測試看起來像:
@Mock
FruitBasket fruitBasket;
@Mock
Fruit fruit;
@Mock
AppleFruit apple;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testAnAppleIsProcessed() {
AppleProcessor appleProcessor = new AppleProcessoer();
when(fruit.getType()).thenReturn(Fruit.APPLE);
when(((AppleFruit) fruit).getApple()).thenReturn(apple);
appleProcessor.process(fruit);
verify(fruitBasket).add(isA(Apple.class));
}
不過,我得到以下錯誤:
java.lang.ClassCastException: package.fruit.Fruit$$EnhancerByMockitoWithCGLIB$$b8254f54 cannot be cast to package.fruit.AppleFruit
它來自該行的測試
when(((AppleFruit) fruit).getApple()).thenReturn(apple);
會任何人k現在如何解決這個問題,我可以測試我的代碼?
謝謝,測試現在可以使用。 – user2844485 2015-02-11 19:33:30