Мое приложение для Android состоит из нескольких модулей.В моем модуле данных я хочу получить имя приложения.
Пока что я делаю это, следуя этому решению , которое возвращает имя приложения, объявленное в манифесте приложения.:
class Registry {
public Registry(Context context) {
mContext = context;
}
public String getApplicationName() {
ApplicationInfo applicationInfo = mContext.getApplicationInfo();
int stringId = applicationInfo.labelRes;
return stringId == 0 ? applicationInfo.nonLocalizedLabel.toString() : context.getString(stringId);
}
private Context mContext;
}
Это прекрасно работает при запуске моего приложения: applicationInfo.labelRes
возвращает идентификатор строки, который затем переводится в строку.
Но в моих инструментах поведение не такоеtest: applicationInfo.labelRes
возвращает 0;это приводит к NullPointerException
, поскольку applicationInfo.nonLocalizedLabel
является нулевым.
Мой тест следующий:
@RunWith(AndroidJUnit4.class)
public class RegistryTest {
@Test
public void testGetApplicationName() {
Context context = InstrumentationRegistry.getContext();
Registry registry = new Registry(context);
String applicationName = registry.getApplicationName();
assertEquals("Foo", applicationName);
}
}
Насколько я понимаю, тест не настроен на использование манифеста приложения,Какие есть варианты, чтобы в моем тесте было настроено подходящее имя приложения?
Спасибо,