久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Mockito ClassCastException - 無法投射模擬

Mockito ClassCastException - A mock cannot be cast(Mockito ClassCastException - 無法投射模擬)
本文介紹了Mockito ClassCastException - 無法投射模擬的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我想測試 AppleProcessor 類中有一個方法:

I have a method in the class AppleProcessor which I would like to test:

public void process(Fruit fruit) {
    if(fruit.getType() == Fruit.APPLE) {
        fruitBasket.add(((AppleFruit) fruit).getApple());
    }
    else {
        // do something else
    }
}

注意,Fruit 是 AppleFruit 實現的方法 getType() 的接口,并且還有一個 getApple() 方法.

Note that Fruit is an interface with the method getType() which AppleFruit implements and also has a getApple() method.

我的測試看起來像:

@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 無法轉換為 package.fruit.AppleFruit

來自測試中的這一行

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

有人知道如何解決這個問題,以便我可以測試我的代碼嗎?

Would anyone know how to resolve this so I can test my code?

推薦答案

當你說

@Mock
Fruit fruit;

你告訴 Mockito:fruit 變量應該是 Fruit 的一個實例.Mockito會動態創建一個實現Fruit的類(這個類是Fruit$$EnhancerByMockitoWithCGLIB$$b8254f54),并創建這個類的一個實例.這個類沒有理由成為 AppleFruit 的實例,因為您沒有告訴 Mockito 該對象必須是 AppleFruit 類型.

You tell Mockito: the fruit variable should be an instance of Fruit. Mockito will dynamically create a class which implements Fruit (this class is Fruit$$EnhancerByMockitoWithCGLIB$$b8254f54), and create an instance of this class. There's no reason for this class to be an instance of AppleFruit, since you didn't tell Mockito that the object had to be of type AppleFruit.

將其聲明為AppleFruit,其類型為AppleFruit.

Declare it as AppleFruit, and it will be of type AppleFruit.

這篇關于Mockito ClassCastException - 無法投射模擬的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How to mock super reference (on super class)?(如何模擬超級參考(在超級類上)?)
Java mock database connection(Java 模擬數據庫連接)
Set value to mocked object but get null(將值設置為模擬對象但獲取 null)
How to mock DriverManager.getConnection(...)?(如何模擬 DriverManager.getConnection(...)?)
Mockito; verify method was called with list, ignore order of elements in list(模擬;使用列表調用驗證方法,忽略列表中元素的順序)
Is it possible to create a mock object that implements multiple interfaces with EasyMock?(是否可以使用 EasyMock 創建一個實現多個接口的模擬對象?)
主站蜘蛛池模板: 美女一级毛片 | 国产视频久久 | 视频三区 | 亚洲人成人一区二区在线观看 | 亚洲欧美一区二区三区国产精品 | 91久久精品一区二区二区 | 九九九久久国产免费 | 天天操夜夜操 | 国产一区二区三区四区三区四 | 日韩欧美专区 | 午夜精品久久 | 91视频网 | 亚洲天堂av网 | 一级免费在线视频 | 日本成人中文字幕 | 欧美福利专区 | 国产福利资源在线 | 精品在线一区 | 天天综合久久网 | 国产午夜精品久久久 | 国产 日韩 欧美 在线 | 一区二区免费在线 | 特一级毛片 | 日韩在线精品视频 | 国产一区www | 国产午夜精品一区二区 | 成人免费影院 | 伊人网在线播放 | 欧美日本一区 | 九九九久久国产免费 | 精精国产xxxx视频在线播放 | 韩国毛片视频 | 国产精品美女www爽爽爽 | 欧美精品乱码久久久久久按摩 | 亚洲精选一区二区 | 国产区在线免费观看 | 欧美国产日韩在线观看成人 | www久久久| 我爱操| 99热最新网址| 久久久成人动漫 |