Flutter测试-验证资产是否存在

问题描述 投票:0回答:1

我有一个Flutter应用,其中包含大量的引号,每个引号都有一个关联的音频文件。

我编写了一个简单的测试,以验证所有指定的音频文件在输入错误等情况下的正确位置:

test('specified audio file should exist for all quotes', () {
    ALL_QUOTES.forEach((quote) {
      final expectedPath = 'assets/${quote.filename}.wav';
      final exists = new File(expectedPath).existsSync();
      expect(exists, isTrue, reason: '$expectedPath does not exist');
    });
  });

这在IntelliJ中还可以,但是使用flutter test从命令行运行时,它在查找的第一件事上失败。

有没有一种方法可以不管其运行方式如何起作用?为什么它会通过一种方法而不是另一种方法?

testing flutter assets
1个回答
0
投票

您无法使用单元测试或窗口小部件测试来执行此操作,因为除非在测试中模拟它(以及您希望在该文件系统上使用的文件),否则就没有文件系统,这会违背场景中的测试。

您只能通过集成测试来做到这一点,集成测试会针对特定目标平台(例如Android)构建包括其资产在内的整个应用程序,然后要求在该特定平台上运行,无论它是物理设备还是仿真设备。对于您要实现的目标而言,这可能太复杂了,因此Remi的建议可能更合适。

© www.soinside.com 2019 - 2024. All rights reserved.