我有以下方法:
public void methodToTest(Locale locale){
switch (locale) {
case EN:
...
break;
case FR:
...
break;
default:
throw new IllegalArgumentException(String.format("Unexpected locale: %s", String.valueOf(locale)));
}
}
并遵循枚举:
public enum Locale {EN,FR}
请帮我覆盖交换机的默认分支。我没有想法如何实现它。
答案 0 :(得分:0)
我写了以下代码:
@RunWith(PowerMockRunner.class)
@PrepareForTest({Locale.class})
public class MyTest {
@Test(expected = IllegalArgumentException.class)
public void methodToTestTest() {
SupportedLocale supportedLocaleMock = PowerMockito.mock(Locale.class);
PowerMockito.mockStatic(Locale.class);
Whitebox.setInternalState(supportedLocaleMock, "name", "Default");
Whitebox.setInternalState(localeMock, "ordinal", 2);
PowerMockito.when(SupportedLocale.values()).thenReturn(new SupportedLocale[]{SupportedLocale.EN, SupportedLocale.FR, supportedLocaleMock});
PowerMockito.when(SupportedLocale.valueOf("default value")).thenReturn(supportedLocaleMock);
objectToTest.methodToTest(SupportedLocale.valueOf("default value"));
}
}