You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS运行flutter test报错:FileSystemException只读文件系统问题

解决MacOS下Flutter测试FileSystemException(只读文件系统)问题

MacOS从Big Sur版本开始,系统根目录(/)默认是只读状态——这是系统安全机制的一部分。你在Mock中指定的/mock/temporaryPath是直接在根目录下创建路径,自然会触发权限错误。而Windows和Ubuntu的根目录默认允许普通用户写入,所以测试能正常运行。你修改当前目录权限没用,因为目标路径不在当前目录范围内。

具体解决方案

  • 修改Mock的路径为可写目录
    把Mock中的临时路径换成当前测试目录的相对路径,或者系统提供的临时目录:

    class MockPathProviderPlatform extends Mock implements PathProviderPlatform {
      @override
      Future<String?> getTemporaryPath() async {
        // 方案1:相对当前测试目录的路径
        return './mock/temporaryPath';
        // 方案2:使用系统临时目录(推荐,无需手动处理权限)
        // return '${Directory.systemTemp.path}/mock/temporaryPath';
      }
    }
    
  • 测试前递归创建目标目录
    即使路径合法,也要确保父目录存在,避免创建失败。在测试初始化时添加:

    setUp(() {
      final targetDir = Directory('./mock/temporaryPath');
      if (!targetDir.existsSync()) {
        targetDir.createSync(recursive: true);
      }
    });
    
  • 清理测试生成的文件(可选)
    为了避免测试目录积累垃圾,可以在测试结束后删除临时目录:

    tearDown(() {
      final targetDir = Directory('./mock/temporaryPath');
      if (targetDir.existsSync()) {
        targetDir.deleteSync(recursive: true);
      }
    });
    

内容的提问来源于stack exchange,提问作者Raphael Pinel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 21:16:00