gpt4 book ai didi

android - 删除用于 android espresso 测试的文件

转载 作者:行者123 更新时间:2023-12-04 03:07:40 25 4
gpt4 key购买 nike

我有一个 MainMenu Activity ,它从文件中获取数据并显示它。我希望在每次 Espresso 测试开始时删除数据,并且在测试之间不保留。

我尝试了以下方法:

Context mContext;

@Before
public void setUp() {
mContext = InstrumentationRegistry.getInstrumentation().getContext();
File[] files = mContext.getFilesDir().listFiles();
if(files != null){
for(File file : files) {
file.delete();
}
}
}

但是,它并没有删除文件。我相信上下文可能不正确。有没有办法在 Espresso 测试开始时清除内部存储空间?

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

最佳答案

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

我尝试过的一个有助于在 Espresso 测试中删除文件的方法是以编程方式执行 ADB shell 命令。像这样:

(Kotlin 示例)

val dir = Environment.getExternalStorageDirectory()
val file = File(dir.absolutePath
+ File.separator + directoryInExtStorageDir
+ File.separator + fileName)
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(
"rm -f " + file.absolutePath)

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())

至于寻找特定类型的文件,您可以使用 FilenameFilter 或 FileFilter 接口(interface)。参见 this answerthis page有关如何执行此操作的示例。

一个例子可能是这样的:

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());
});

希望对您有所帮助。

关于android - 删除用于 android espresso 测试的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47642015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com