Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android getMockContext()/dev/null";在测试用例中导致错误_Android_File_Directory_Mocking_Android Contentprovider - Fatal编程技术网

Android getMockContext()/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

我在ContentProvider中有一个方法,可以将文件保存到getFileDir()基本路径

然而,在测试中: getMockContext().getFilesDir()=“/dev/null” 这会导致错误,因为/dev/null不是目录(我想文件不能保存在那个垃圾路径下)


我可以将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());
    }
}