首页 > 解决方案 > PowerMockito Environment.getExternalStoragePublicDirectory() 返回 null

问题描述

我在Environment.getExternalStoragePublicDirectory()模拟 PowerMockito时遇到问题

摇篮

testImplementation 'org.powermock:powermock-module-junit4:2.0.5'
testImplementation 'org.powermock:powermock-api-mockito2:2.0.4'
testImplementation 'org.powermock:powermock-classloading-xstream:2.0.4'
testImplementation 'org.mockito:mockito-core:3.1.0'

测试班

@RunWith(PowerMockRunner.class)
@PrepareForTest({Environment.class})
public class StorageUtilsTest {
    @Test
    public void UseExternalStoragePublicDirectoryWhenItIsAvailable() {
        PowerMockito.mockStatic(Environment.class);
        File mockStorageDirectoryFile = Mockito.mock(File.class);
        File aFile = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
        PowerMockito.when(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)).thenReturn(mockStorageDirectoryFile);
    }
}

aFile为 null 所以when返回一个模拟异常

org.mockito.exceptions.misusing.NotAMockException: Argument should be a mock, but is: class java.lang.Class

似乎问题在于getExternalStoragePublicDirectory()返回的方法null

任何帮助表示赞赏。

标签: androidrobolectricpowermockito

解决方案


推荐阅读