当前位置: 首页 > 知识库问答 >
问题:

颤振:如何加载测试文件

孟建木
2023-03-14

文件可以从相对于省道脚本文件的目录中读取,简单地称为var file=new File('。/夹具/contacts.json')

但是,在IDE中运行的颤振测试无法读取该文件。

加载为资源(不是,因为我不想在应用程序中捆绑测试数据文件)在测试中也不起作用。

在flatter中读取文件的好方法是什么(对于命令行测试和IDE测试)?

运行颤振测试非常快。然而,IntellijIDE内部的测试速度非常慢,但它可以设置调试断点并单步执行和查看变量。所以这两种测试都非常有用。

共有3个答案

笪俊迈
2023-03-14

我创建了一个util,因为vscode和命令行测试基路径不同

https://github.com/terryx/flutter-muscle/blob/master/github_provider/test/utils/test_path.dart

这就是我使用它的方式

https://github.com/terryx/flutter-muscle/blob/master/github_provider/test/services/github_test.dart#L13

另一种方法是在命令行中指定准确的测试路径

$ flutter test test
鲍鸿波
2023-03-14

我今天遇到了同样的问题。我的测试在IDE(Android Studio)中通过,但在CI上失败。我发现IDE需要一个非相对路径,但是flattertest需要一个相对路径。我认为这是一个错误,我将寻找正确的地方报告它。然而,在此期间,我发现了一个粗糙的工作。基本上,我有一个函数,它尝试两种方法来指定文件路径。。

import 'dart:convert';
import 'dart:io';

Future<Map<String, dynamic>> parseRawSample(String filePath,
    [bool relative = true]) async {
  filePath = relative ? "test_data/src/samples/raw/$filePath" : filePath;

  String jsonString;
  try {
    jsonString = await File(filePath).readAsString();
  } catch (e) {
    jsonString = await File("../" + filePath).readAsString();
  }
  return json.decode(jsonString);
}

大部分代码都是针对我的情况编写的,但我认为其他人可能会根据自己的目的修改这项工作。

东郭宏深
2023-03-14

刚刚试了一下,比你想象的要容易。

首先,创建一个与测试所在目录相同的文件夹。例如,我创建了一个名为test_resources的文件夹。

然后,假设我们有以下JSON文件用于测试目的。

测试资源/联系人。json

{
  "contacts": [
    {
      "id": 1,
      "name": "Seth Ladd"
    },
    {
      "id": 2,
      "name": "Eric Seidel"
    }
  ]
}

测试/加载\u文件\u测试。飞奔

我们可以将其用于我们的测试,如下所示:

import 'dart:convert';
import 'dart:io';
import 'package:flutter_test/flutter_test.dart';

void main() {
  test('Load a file', () async {
    final file = new File('test_resources/contacts.json');
    final json = jsonDecode(await file.readAsString());
    final contacts = json['contacts'];

    final seth = contacts.first;
    expect(seth['id'], 1);
    expect(seth['name'], 'Seth Ladd');

    final eric = contacts.last;
    expect(eric['id'], 2);
    expect(eric['name'], 'Eric Seidel');
  });
}
 类似资料:
  • 目前我正在尝试颤振网页,我需要在颤振主频道工作。但是,后来我需要继续我的其他项目。在他们身上,我正在研究颤振稳定通道。 但是,每当我使用命令“flutter channel stable”或“fluter channel master”切换我的flutter通道时,它每次都会重新下载sdk和其他工具。 目前,我已经下载了稳定的颤振sdk和稳定的dart sdk。 我已将它们移动到“FlutterS

  • 我读过https://flutter.dev/docs/development/ui/assets-and-images#asset-包依赖项中的图像和从资产中读取的文本文件,并应用了所有这些,但我的代码仍然无法工作。。。。 我为此打开了一个新项目,在主文件夹中创建了资产和文件: 然后,不信任Android Studio,我检查了vi,在pubspec.yaml一切都好: 该文件以以下内容结尾:

  • Xcode的输出:在文件中包含从 /Users/dani/development/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.3/ios/Classes/FLTURLLauncherPlugin.m: 7: /Users/dani/development/flutter/.pub-cache/hosted/pub.dart

  • 每当我尝试使用AdMob加载广告时,我都会得到以下错误

  • 我可以从flutter应用程序的assets/Images目录加载图像,但当从flutter包的assets/Images目录加载相同的图像时,我会得到以下错误:

  • 试图在flutter中加载图像,但无法做到这一点,得到以下错误 I/Flutter(3214):IMAGE RESOURCE SERVICE捕获的异常(3214):引发以下断言解析图像编解码器:I/Flutter(3214):无法加载资产:资产/test.jpg I/Flutter(3214):I/Flutter(3214):引发异常时,这是堆栈:I/Flutter(3214):#0 Platfo