dart 获取Flutter中当前执行单元测试的路径

6ie5vjzr  于 2022-12-16  发布在  Flutter
关注(0)|答案(1)|浏览(196)

如何获得一个FileUri来表示Flutter中当前正在执行的单元测试的路径?更具体地说,就是运行测试的文件夹。
该路径可能不一定是当前执行的 * 代码 * 的位置,例如在代码在文件中而不是在当前执行的测试中运行的情况下。
Platform.scriptDirectory.current都不能在单元测试中工作。
例如,您可能希望创建自己的黄金测试实现(例如存储并比较文本文件而不是图像),并且需要在当前测试的目录中创建一个文件。
我已经知道了这个问题的答案,我在下面贴了出来,但是看起来很“非官方”。这篇文章的目的是1)看看我的答案是否可以改进,2)通过记录我的解决方案来帮助其他人。

voj3qocg

voj3qocg1#

使用本地文件比较器中的basedir

import 'package:flutter_test/flutter_test.dart';

final Uri basedir = (goldenFileComparator as LocalFileComparator).basedir;

输出:file:///path/to/project/your_project/test/path/to/test/
goldenFileComparator是一个全局变量,它表示比较golden tests的当前方法。默认情况下,在执行测试时,Flutter测试框架将其设置为LocalFileComparator,在创建时提供了基本测试目录。有关实现的更多详细信息,请参见the docs
这个比较器的赋值是在测试框架内部完成的,这意味着不可能像框架创建LocalFileComparator那样检索basedir。从LocalFileComparator中借用值似乎是唯一的方法。
开发人员有可能将goldenFileComparator更改为他们自己的实现,从而导致强制转换失败。应该考虑这种情况。

相关问题