[英]PowerMockito to mock a static method inside a class using MockitoJUnitRunner
[英]How to mock a static method inside another static method using PowerMockito?
我有一個名為ParticipantUtils.java
class 的 java 包含 static 方法,如下所示:
public class ParticipantUtils {
public static boolean isAlpha(String inputString) {
if (Character.isLetter(inputString[0]) return true;
return false;
}
public static String getNationalNumberJP(String input) {
if (isAlpha(input)) return input;
return "Invalid input";
}
}
我正在編寫@Test
來測試ParticipantUtilsTest.java
中的 function getNationalNumberJP()
,如下所示:
@RunWith(PowerMockRunner.class)
@PrepareForTest({ParticipantUtils.class})
public class ParticipantUtilsTest {
@Test
public void getNationalNumberJP_input_is_alpha(){
PowerMockito.mockStatic(ParticipantUtils.class);
String input = "ABCD";
PowerMockito.when(ParticipantUtils.isAlpha("ABCD")).thenReturn(true);
assertEquals("ABCD", ParticipantUtils.getNationalNumberJP(input));
}
}
但是,這是行不通的。 當調用 function isAlpha(input)
時,它不會返回true
。 我在assertEquals(...)
行收到此錯誤
如何解決這個問題?
您是 mocking ParticipantUtils
class。這包括getNationalNumberJP()
。 您沒有為(因為您想測試它)提供模擬行為,因此模擬不知道該怎么做並返回返回類型的默認值(對於引用類型是null
)。 您的問題不是isAlpha()
沒有返回true
。 如果這是問題所在,那么“實際”將是“無效輸入”而不是null
。
你根本不需要在這里嘲笑。 無論如何, isAlpha()
的結果在您的測試用例中都是true
的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.