簡體   English   中英

如何在私有 Java 類的靜態方法中模擬局部變量?

[英]How to mock local variable in a static method of a private java class?

我正在為類“Util”中的靜態方法“updateStatusOfModel”編寫單元測試,其構造函數是私有的。

這個靜態方法實例化一個局部變量 dbManager 如下:

ActivationDBManager dbManager = new ActivationDBManager();

這個 dbManager 用於調用我必須模擬的方法。

我對此進行了如下嘲笑,但不知何故,它不起作用。 單元測試沒有為 ActivationDBManager 選擇模擬對象。

任何幫助表示贊賞。

@Test 
@PrepareForTest(Util.class) 
void updateStatusModel() throws Exception {     
ActivationDBManager mockdbManager = Mockito.mock(ActivationDBManager.class); 
   PowerMockito.whenNew(ActivationDBManager.class).withNoArguments().thenReturn(mockdbManager);    

PowerMockito.doNothing().when(mockdbManager).updateDBStatus(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyString());  

Util.updateStatus("", "", "", "");
}

Util.updateStatus 是一個靜態方法。

您應該將ActivationDBManager添加到@PrepareForTest ,因為您正在操縱其字節碼(使用whenNew )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM