2017-01-24 5 views
2

私は現在、実行中のデバイスのDisplayMetrics設定に敏感なアプリケーションでフラグメントメソッドをテストしています。 RobolectricTestRunnerのRobolectricテストでDisplayMetricsを調整するにはどうすればいいですか?Robolectricテストの画面密度を調整するにはどうすればいいですか?

ここで私は画面のDisplayMetricsを制御できるようにしたいという簡単なテストの要点です。

@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())); 
} 
関連する問題