Android getMockContext()/dev/null";在测试用例中导致错误
我在ContentProvider中有一个方法,可以将文件保存到getFileDir()基本路径 然而,在测试中: getMockContext().getFilesDir()=“/dev/null” 这会导致错误,因为/dev/null不是目录(我想文件不能保存在那个垃圾路径下)Android getMockContext()/dev/null";在测试用例中导致错误,android,file,directory,mocking,android-contentprovider,Android,File,Directory,Mocking,Android Contentprovider,我在ContentProvider中有一个方法,可以将文件保存到getFileDir()基本路径 然而,在测试中: getMockContext().getFilesDir()=“/dev/null” 这会导致错误,因为/dev/null不是目录(我想文件不能保存在那个垃圾路径下) 我可以将getFilesDir()模拟到磁盘上的其他路径吗?您可以使用临时文件夹在您的系统上生成一个临时文件夹,只用于测试的生命周期(它将在测试结束后自动删除) 下面是一个使用Mockito生成mock的示例 imp
我可以将getFilesDir()模拟到磁盘上的其他路径吗?您可以使用
临时文件夹
在您的系统上生成一个临时文件夹,只用于测试的生命周期(它将在测试结束后自动删除)
下面是一个使用Mockito生成mock的示例
import org.junit.Before;
import org.junit.rules.TemporaryFolder;
import org.junit.Rule;
import static org.mockito.MockitoAnnotations.initMocks;
public class SampleTest {
@Rule public TemporaryFolder mTempFolder = new TemporaryFolder();
@Mock private Context mMockContext;
@Before
public void setUp() throws IOException {
initMocks(this);
when(mMockContext.getFilesDir()).thenReturn(mTempFolder.newFolder());
}
}
您可以使用
TemporaryFolder
在您的系统上为测试的生命周期生成一个temp文件夹(它将在测试结束后自动删除)
下面是一个使用Mockito生成mock的示例
import org.junit.Before;
import org.junit.rules.TemporaryFolder;
import org.junit.Rule;
import static org.mockito.MockitoAnnotations.initMocks;
public class SampleTest {
@Rule public TemporaryFolder mTempFolder = new TemporaryFolder();
@Mock private Context mMockContext;
@Before
public void setUp() throws IOException {
initMocks(this);
when(mMockContext.getFilesDir()).thenReturn(mTempFolder.newFolder());
}
}