0

I have following method:

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)));
            }
}

and following enum:

public enum Locale {EN,FR}

Please help me to cover the default branch of switch. I have not ideas how to realize it.

gstackoverflow
  • 36,709
  • 117
  • 359
  • 710

1 Answers1

0

I have wrote following code:

    @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"));
        }
    }
gstackoverflow
  • 36,709
  • 117
  • 359
  • 710