如何在android单元测试中模拟Resources类以获得scaledDensity?

时间:2017-01-18 11:54:24

标签: android mocking mockito robolectric

我在我的android项目中使用此语句“ResourceResources.getSystem()。getDisplayMetrics()。scaledDensity”以获得缩放密度。当我在编写单元测试时,它说应该嘲笑Resources类。但是当我尝试模拟时,android会向我抛出一个错误,资源中的getSystem()方法没有被模拟。

1 个答案:

答案 0 :(得分:2)

我认为这可以适应

的特定情况
ResourceResources.getSystem().getDisplayMetrics().scaledDensity

我这样做的

Resources.getSystem().getStrings();

我也为这件事感到烦恼,希望以此对我有帮助

 PowerMockito.mockStatic(Resources.class,RETURNS_MOCKS);
 Resources res=Mockito.mock(Resources.getSystem().getClass());
 PowerMockito.when(Resources.getSystem()).thenReturn(res);
 Mockito.when(res.getString(Mockito.anyInt())).thenReturn("any_message");