Dart/Flutter环境下ObjectBox如何删除其生成的所有本地文件
Flutter/Dart ObjectBox 单元测试后清理生成文件方案
Dart版本的ObjectBox已经提供了对应Java版deleteAllFiles的能力,按以下步骤操作即可:
- 第一步:先关闭当前正在运行的
Store实例,调用实例方法store.close(),必须执行这一步,否则文件会被占用导致删除失败。 - 第二步:调用
Store的静态异步方法Store.deleteFromDirectory(存储目录路径),即可删除该目录下所有ObjectBox生成的文件。
单元测试完整示例
import 'dart:io'; import 'package:objectbox/objectbox.dart'; import 'package:test/test.dart'; import 'objectbox.g.dart'; // 替换为你的ObjectBox生成文件路径 late Store store; const testDir = './objectbox-test'; // 你指定的测试用存储目录 void main() { setUp(() async { // 每次测试前清理残留文件,再初始化Store if (await Directory(testDir).exists()) { await Store.deleteFromDirectory(testDir); } store = await openStore(directory: testDir); }); tearDown(() async { // 测试结束后关闭Store再删除所有文件 store.close(); await Store.deleteFromDirectory(testDir); }); test('你的测试用例逻辑', () { // 此处编写测试代码 }); }
注意事项
- 如果你初始化Store时没有指定自定义存储路径,可以通过
store.directoryPath属性获取当前实例的存储目录,直接传入删除方法即可,无需硬编码路径。 - 若你使用的ObjectBox版本低于v1.0,没有内置
deleteFromDirectory方法,也可以在关闭Store后手动删除整个存储目录:await Directory(存储目录路径).delete(recursive: true),效果完全一致。 - 所有删除相关方法都是异步操作,在单元测试的teardown逻辑中需要添加
await关键字等待操作执行完成,避免出现删除不完整的问题。
内容的提问来源于stack exchange,提问作者F.M.
相关产品推荐
相关产品推荐

