删除android espresso测试的文件

删除android espresso测试的文件,android,android-testing,android-espresso,android-espresso-recorder,Android,Android Testing,Android Espresso,Android Espresso Recorder,我有一个主菜单活动,从文件中获取数据并显示它。我希望在每次浓缩咖啡测试开始时删除数据,并且在测试之间不保留数据 我尝试了以下方法: Context mContext; @Before public void setUp() { mContext = InstrumentationRegistry.getInstrumentation().getContext(); File[] files = mContext.getFilesDir().listFiles(); if

我有一个主菜单活动,从文件中获取数据并显示它。我希望在每次浓缩咖啡测试开始时删除数据,并且在测试之间不保留数据

我尝试了以下方法:

Context mContext;

@Before
public void setUp() {
    mContext = InstrumentationRegistry.getInstrumentation().getContext();
    File[] files = mContext.getFilesDir().listFiles();
    if(files != null){
        for(File file : files) {
            file.delete();
        }
    }
}
但是,它不会删除这些文件。我认为上下文可能不正确。有没有办法在浓缩咖啡测试开始时清除内部存储


这些文件是“.ser”文件。

您是否尝试过使用adb shell命令

在Espresso测试中,我尝试了一件有助于删除文件的事情,那就是以编程方式执行ADB shell命令。大概是这样的:

File dir = Environment.getExternalStorageDirectory()
    File file = new File(dir.getAbsolutePath()
            + File.separator + directoryInExtStorageDir
            + File.separator + fileName)
    InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(
            "rm -f " + file.getAbsolutePath())
File dir = Environment.getExternalStorageDirectory();
    File directory = new File(dir.getAbsolutePath()
            + File.separator + directoryInExtStorageDir);
    List<File> filesToDelete = Arrays.asList(directory.listFiles((new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(".ser");
        }
    })));

    filesToDelete.forEach(file->{
        InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(
                "rm -f " + file.getAbsolutePath());
    });
(科特林样本)

Java看起来像这样:

File dir = Environment.getExternalStorageDirectory()
    File file = new File(dir.getAbsolutePath()
            + File.separator + directoryInExtStorageDir
            + File.separator + fileName)
    InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(
            "rm -f " + file.getAbsolutePath())
File dir = Environment.getExternalStorageDirectory();
    File directory = new File(dir.getAbsolutePath()
            + File.separator + directoryInExtStorageDir);
    List<File> filesToDelete = Arrays.asList(directory.listFiles((new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(".ser");
        }
    })));

    filesToDelete.forEach(file->{
        InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(
                "rm -f " + file.getAbsolutePath());
    });
对于查找特定类型的文件,可以使用FilenameFilter或FileFilter接口。有关如何执行此操作的示例,请参见和

示例可能如下所示:

File dir = Environment.getExternalStorageDirectory()
    File file = new File(dir.getAbsolutePath()
            + File.separator + directoryInExtStorageDir
            + File.separator + fileName)
    InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(
            "rm -f " + file.getAbsolutePath())
File dir = Environment.getExternalStorageDirectory();
    File directory = new File(dir.getAbsolutePath()
            + File.separator + directoryInExtStorageDir);
    List<File> filesToDelete = Arrays.asList(directory.listFiles((new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(".ser");
        }
    })));

    filesToDelete.forEach(file->{
        InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(
                "rm -f " + file.getAbsolutePath());
    });
File dir=Environment.getExternalStorageDirectory();
文件目录=新文件(dir.getAbsolutePath()
+File.separator+directoryintextstoragedir);
List filesToDelete=Arrays.asList(directory.listFiles((新文件名过滤器)(){
@凌驾
公共布尔接受(文件目录,字符串名称){
返回名称.endsWith(“.ser”);
}
})));
filesToDelete.forEach(文件->{
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(
“rm-f”+file.getAbsolutePath());
});

希望有帮助。

我遇到了同样的问题。解决方案只是更改getTargetContext()的getContext()


很简单:)

您是要从应用程序的“文件”文件夹中删除文件,还是从测试应用程序的“文件”文件夹中删除文件?