0
내가 단위 테스트에 내가 java.util.Locale
을 조롱하는 데 필요한 테스트하려면비웃음 Locale.forLanguageTag
public static Context fromLanguageTag(final String languageTag) {
final Context context = new Context();
final Locale locale = Locale.forLanguageTag(languageTag);
context.language = locale.getLanguage().length()==3 ? locale.getLanguage() : locale.getISO3Language();
return context;
}
을하는 방법을 시도하고있다. 내가 PowerMock 및 Mockito 사용하고 있습니다 :
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Locale.class })
public class ContextTest {
public void testFromLanguageTag() throws Exception {
mockStatic(Locale.class);
final Locale mockLocale = mock(Locale.class);
when(mockLocale.getLanguage()).thenReturn(LANGUAGE_3_OUTPUT);
when(mockLocale.getISO3Language()).thenReturn(LANGUAGE_ISO);
when(Locale.forLanguageTag(Mockito.eq(LANGUAGE_TAG_LONG_INPUT))).thenReturn(mockLocale);
final Context c = Context.fromLanguageTag(LANGUAGE_TAG_LONG_INPUT);
assertThat(c.getLanguage()).isEqualTo(LANGUAGE_3_OUTPUT);
}
}
을하지만 조롱 메서드가 호출되지 않습니다 mockLocale
에서 호출 것 같다; 대신 나는 java.util.Locale.getISO3Language
(나는 조롱하고 싶다)에서 java.util.MissingResourceException
을 얻는다. 어떻게 해결할 수 있습니까?
제 경우의 해결책은 [시스템 속성을 가져 오는 모의 시스템 클래스] (http://stackoverflow.com/a/20408354)입니다. –