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

问题描述 投票:2回答:1

我在我的android项目中使用这条语句 "ResourceResources.getSystem().getDisplayMetrics().scaledDensity "以获得缩放密度。当我写单元测试时,它说Resource类应该被mocked。但是当我尝试模拟时,android向我抛出了一个错误,即Resources中的getSystem()方法没有被模拟。

android mocking mockito robolectric
1个回答
0
投票

我想这可以适应具体的情况。

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");
© www.soinside.com 2019 - 2024. All rights reserved.