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

Mockito ClassCastException - 無法投射模擬

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

問題描述

我想測試 AppleProcessor 類中有一個(gè)方法:

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
    }
}

注意,F(xiàn)ruit 是 AppleFruit 實(shí)現(xiàn)的方法 getType() 的接口,并且還有一個(gè) 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));
}

但是我收到以下錯(cuò)誤:

java.lang.ClassCastException: package.fruit.Fruit$$EnhancerByMockitoWithCGLIB$$b8254f54 無法轉(zhuǎn)換為 package.fruit.AppleFruit

來自測試中的這一行

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

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

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

推薦答案

當(dāng)你說

@Mock
Fruit fruit;

你告訴 Mockito:fruit 變量應(yīng)該是 Fruit 的一個(gè)實(shí)例.Mockito會動態(tài)創(chuàng)建一個(gè)實(shí)現(xiàn)Fruit的類(這個(gè)類是Fruit$$EnhancerByMockitoWithCGLIB$$b8254f54),并創(chuàng)建這個(gè)類的一個(gè)實(shí)例.這個(gè)類沒有理由成為 AppleFruit 的實(shí)例,因?yàn)槟鷽]有告訴 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.

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

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

相關(guān)文檔推薦

How to mock super reference (on super class)?(如何模擬超級參考(在超級類上)?)
Java mock database connection(Java 模擬數(shù)據(jù)庫連接)
Set value to mocked object but get null(將值設(shè)置為模擬對象但獲取 null)
How to mock DriverManager.getConnection(...)?(如何模擬 DriverManager.getConnection(...)?)
Mockito; verify method was called with list, ignore order of elements in list(模擬;使用列表調(diào)用驗(yàn)證方法,忽略列表中元素的順序)
Is it possible to create a mock object that implements multiple interfaces with EasyMock?(是否可以使用 EasyMock 創(chuàng)建一個(gè)實(shí)現(xiàn)多個(gè)接口的模擬對象?)
主站蜘蛛池模板: 亚洲乱码在线 | 久久精品一区二区三区四区 | 国产福利久久 | 日本加勒比在线 | 久久久久久久国产精品 | 亚洲综合图片区 | 六月丁香综合 | www.毛片.com| 久草福利在线观看 | 97福利视频 | 欧美黄色一级大片 | 久草资源网 | 国产激情小视频 | 欧美mv日韩mv国产 | 秋霞午夜伦理 | 福利网站在线观看 | 可以看毛片的网站 | 性欧美8khd高清极品 | 国产精品毛片一区视频播 | 91青青草| 精品欧美一区二区三区久久久 | 在线观看免费毛片 | 亚洲综合精品 | 一区二区三区成人 | 久草福利在线视频 | av网站导航 | 成人做爰9片免费视频 | 日韩免费一区 | 激情综合色 | 亚洲精品a | 日韩一区二区在线播放 | 夜夜嗨av一区二区三区网页 | 国产综合亚洲精品一区二 | 久久草视频 | 国产精品欧美激情 | 国产51自产区| 成人高潮片免费网站 | 成人免费网站黄 | 日韩视频免费大全中文字幕 | 96视频在线 | 亚洲人成免费 |