Android单元测试中的Mock Environment.getExternalStorageDirectory()
我想模拟Android单元测试中的Mock Environment.getExternalStorageDirectory(),android,unit-testing,mockito,robolectric,Android,Unit Testing,Mockito,Robolectric,我想模拟环境。getExternalStorageDirectory()并将其指向“C:\Users\\Android Test\”。我尝试了以下两种选择,但均无效: 模拟运行时环境。应用程序认为它也会模拟环境,但它没有 使用过的阴影环境 另外,我需要在不使用模拟器或设备的情况下对文件的复制/删除进行单元测试,因此我使用的是Robolectric您可以尝试使用临时文件夹进行此操作 @RunWith(PowerMockRunner.class) @PrepareForTest(Environmen
环境。getExternalStorageDirectory()
并将其指向“C:\Users\\Android Test\”。我尝试了以下两种选择,但均无效:
运行时环境。应用程序
认为它也会模拟环境
,但它没有另外,我需要在不使用模拟器或设备的情况下对文件的复制/删除进行单元测试,因此我使用的是
Robolectric
您可以尝试使用临时文件夹进行此操作
@RunWith(PowerMockRunner.class)
@PrepareForTest(Environment.class)
public class ExternalStorageTest() {
@Rule
TemporaryFolder tempFolder = new TemporaryFolder();
@Before
public void doSetup() {
PowerMockito.mockStatic(Environment.class);
when(Environment.getExternalStorageDirectory()).thenReturn(tempFolder.newFolder());
}
}
ShadowEnvironment.setExternalStorageState(filesDir, Environment.MEDIA_MOUNTED)
@RunWith(PowerMockRunner.class)
@PrepareForTest(Environment.class)
public class ExternalStorageTest() {
@Rule
TemporaryFolder tempFolder = new TemporaryFolder();
@Before
public void doSetup() {
PowerMockito.mockStatic(Environment.class);
when(Environment.getExternalStorageDirectory()).thenReturn(tempFolder.newFolder());
}
}