2017-01-24 5 views
2

В настоящее время я тестирую метод фрагмента в своем приложении, который чувствителен к настройкам DisplayMetrics устройства, на котором он запущен. Как вы настраиваете DisplayMetrics в тесте Robolectric для RobolectricTestRunner (пожалуйста, укажите пример, если это возможно)?Как настроить плотность экрана для теста Robolectric?

Вот суть моего простого теста, где я хочу иметь возможность управлять экранным дисплеем экрана.

@Test 
public void whenMyFramentMethod_willWorkForDensity() { 

    ... 

    startFragment(fragment); 

    //Results of this method will vary with different screen sizes. 
    Assert.assertEquals(200, fragment.fetchAWidth()); 
} 
+0

Почему вы хотели бы проверить ширину? Если это не поможет, что вы должны делать? –

+0

Полезной частью этого теста было бы гарантировать, что какой-либо метод учитывает плотность экрана при измерении чего-либо. Очевидным способом убедиться, что это происходит, было бы установить плотность экрана на что-то конкретное и убедиться, что результат метода умножается на этот коэффициент. – Dennis

ответ

0

Вы можете изменить его на ShadowResources:

@Test 
public void shadow_resources_example(){ 
    final Context context = RuntimeEnvironment.application; 
    final ShadowResources shadowResources = Shadows.shadowOf(context.getResources()); 
    shadowResources.setDensity(2f); //2 == xhdpi for example 
    assertEquals(20, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, context.getResources().getDisplayMetrics())); 
} 
Смежные вопросы