如何调整Robolectric测试的屏幕密度?

时间:2017-01-24 16:05:44

标签: android unit-testing junit4 robolectric

我目前正在我的应用中测试一种对其运行的设备的DisplayMetrics设置敏感的片段方法。如何在RobolectricTestRunner的Robolectric测试中调整DisplayMetrics(如果可能,请提供示例)?

这是我的简单测试的要点,我希望能够控制屏幕的DisplayMetrics。

    @Test
public void whenMyFramentMethod_willWorkForDensity() {

    ...

    startFragment(fragment);

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

2 个答案:

答案 0 :(得分:1)

您现在应该使用@Config注释来设置环境:

@Config(qualifiers = "xhdpi")

答案 1 :(得分: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()));
}