我有兩張具有相同參數的地圖。我想模擬其中一個來測試我的課程。但我不知道它不起作用的原因這是我的課public class A { private Map<String, Foo> map1; private Map<String, Foo> map2; public A() { this.map1 = new HashMap<String,Foo>(); map1.put("one",new Foo()); this.map2 = new HashMap<String, Foo>(); map2.put("two", new Foo()); } public void doSomenthing(String str){ Foo foo = map1.get(str) //other actions }}這是我的測試課:public class ATest{ @InjectMocks private A a; @Mock private HashMap<String, Foo> mapTest; @Before public void initialize() throws Exception { when(mapTest.get(Mockito.anyString())).thenReturn(new Foo()); } @Testpublic void testSomething() throws Exception { a.doSomething("blabla"); }}
3 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
@InjectMocks
嘗試通過以下方式注入依賴項
首先使用構造函數。
然后是屬性設置器。
然后現場注入。
#3 可能適合你。請嘗試以下操作:
將映射初始化從構造函數刪除到其 setter 函數。
將變量名稱更改
mapTest
為map1
測試類中的變量名稱。也
map2
類似地定義。然后 InjectMocks 應該找到一個匹配的字段來注入。
分享更多代碼部分以獲得更準確的答案。

慕村9548890
TA貢獻1884條經驗 獲得超4個贊
您需要在兩個類中具有相同的名稱和相同的類型:
//main class
private HashMap<String, Foo> map;
//test class
@Mock
private HashMap<String, Foo> map;
添加回答
舉報
0/150
提交
取消