(五)Mock一類多例項3種 實戰篇

2021-09-13 17:59:22 字數 1884 閱讀 8560

@mocked太狠了,把類的所有的例項都mock了。有時候我們希望乙個類不同的例項有不同的mock邏輯,怎麼呢?

下面列舉3種方法。還是以如何mock類中的提到的anordinaryclass為例。

import mockit.expectations;

import mockit.injectable;

import mockit.mocked;

import org.junit.assert;

import org.junit.test;

//乙個類多個例項的mock

public class oneclassmanyinstancemockingtest

};anordinaryclass instance3 = new anordinaryclass();

assert.asserttrue(instance1.ordinarymethod() == 20); //instance1 的ordiarymethod 被mock了

assert.asserttrue(instance2.ordinarymethod() == 200); //instance2 的ordiarymethod 被mock了

assert.asserttrue(instance3.ordinarymethod() == 2); //instance3 不受影響,執行原邏輯

}//mock 方法二:用@mocked

// 適用場景:類的所例項都需要mock,但不同例項也能保留不同mock的邏輯。

@test

public void testmocking2(@mocked anordinaryclass instance1,@mocked anordinaryclass instance2 )

};anordinaryclass instance3 = new anordinaryclass();

assert.asserttrue(instance1.ordinarymethod() == 20); //instance1 的ordiarymethod 被mock了

assert.asserttrue(instance2.ordinarymethod() == 200); //instance2 的ordiarymethod 被mock了

assert.asserttrue(instance3.ordinarymethod() == 0); //instance3 受@mock的影響,@mock會把類的所有方法都mock,返回型別為基本資料型別的返回0

}//mock 方法三:用@injectable。

// 適用場景:不是類的所例項都需要mock,被@injectable注釋例項會被mock,其他例項執行原有邏輯,不同例項也能保留不同mock邏輯。

@test

public void testmocking3(@injectable anordinaryclass instance1, @injectable anordinaryclass instance2)

};anordinaryclass instance3 = new anordinaryclass();

assert.asserttrue(instance1.ordinarymethod() == 20); //instance1 的ordiarymethod 被mock了

assert.asserttrue(instance2.ordinarymethod() == 200); //instance2 的ordiarymethod 被mock了

assert.asserttrue(instance3.ordinarymethod() == 2); //instance3 不受injectable的影響,因為@injectable只影響某乙個例項。

}}

《封裝一類梯形物件Ladder Java第五周》

對任務及求解方法的描述部分 問題描述 封裝一類梯形物件ladder,該類物件具有上底 下底和高的屬性,具有初始化梯形的功能 修改上底 下底和高的功能 求面積的功能。程式頭部的注釋結束 package liu public class ladder ladder double a,double b,d...

yolov3 修改 只識別一類(person)

yolov3可以識別多種目標,但是我們可能只需要識別一類物體,例如person。在編譯yolov3之後,預設可以識別多種目標 之前在網上看其他人修改yolov2版本,可以只識別person 但是yolov3版本的 有變化,需要做出其他修改。在網上找了一下,沒有發現yolov3的相關修改,於是自己修改...

3 第一類方法 不同模組如何使用

深度學習架構取代手工進行特徵和相似性計算。特徵提取模組為具有共享權重的多分支網路實現。然後,使用以下功能進行匹配 1.固定相關層 卷積實現 2.全連線神經網路產生匹配得分 3.卷積網路後加relu 使用卷積或全連線網路能從資料中學習適當的相似性度量,而不是在開始時強加乙個相關層。前者準確但慢 cnn...