android - 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
任何帮助表示赞赏。
解决方案
推荐阅读
- php - 需要在数组中取数组值
- javascript - Javascript 使用对象和重命名属性来扁平化深度嵌套的数组
- javascript - JQuery 使用类标签 onclick 附加 HTML
- apache-kafka - 如果生产者执行重试,两条消息是否具有相同的时间戳?
- c++ - 难以理解动态多态性
- angular - getDisplayMedia 未在 TypeScript 3.8 中指定
- java - 根据Android中的本地语言更改语言
- django - 构建的 Docker 映像无法到达 postgreSQL
- asp.net - 404 - 找不到文件或目录。本地和服务器的不同结果
- android - 我们可以在没有真实设备的情况下在 Android Studio 中创建一个真实设备模型特定的模拟器/模拟器,比如 OPPO A37 模型吗