我有一个MainMenu活动,它从文件中获取数据并显示出来。我希望数据在每次浓缩咖啡测试开始时被删除,并且在测试之间不会持续。
我尝试了以下方法:
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 外壳命令?
在Espresso测试中,我尝试了一件有助于删除文件的事情,那就是以编程方式执行ADB shell命令。类似这样:
(静态编程语言示例)
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接口。请看这个答案和本页的例子,看看你如何做到这一点。
示例可能如下所示:
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());
});
希望这有帮助。
我遇到了同样的问题。解决方案只是将getContext()更改为getTargetContext()
mContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
File[] files = mContext.getFilesDir().listFiles();
if(files != null){
for(File file : files) {
file.delete();
}
}
就这么简单:)
在科特林。。
@BeforeClass
fun beforeClass() {
getInstrumentation().targetContext.filesDir.deleteRecursively()
}
@RunWith(AndroidJUnit4::class)
@LargeTest
class SomeTest {
@Test
fun someFreshInstallationTest() {
...
}
}