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



如何获得表示 Flutter 中当前正在执行的单元测试路径的FileUri?更具体地说,只是正在运行的测试的文件夹。

路径可能不一定是当前正在执行的代码的位置,例如,如果代码在当前正在执行的测试以外的文件中运行。

Platform.scriptDirectory.current在单元测试中都不起作用。

例如,您可能希望创建自己的黄金测试实现(例如存储文本文件而不是图像并与之进行比较),并且需要在当前测试的目录中创建一个文件。

我已经知道这个问题的答案,我已经在下面发布了,但它似乎非常"非官方"。这篇文章的目的是 1) 看看我的答案是否可以改进,2) 通过记录我的解决方案来帮助他人。

使用 LocalFileComparator 中的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是一个全局变量,表示比较黄金测试的当前方法。默认情况下,在执行测试时,Flutter 测试框架将其设置为LocalFileComparator,该在创建时提供基本测试目录。有关实现的更多详细信息,请参阅文档。

这个比较器的分配是在测试框架的深处完成的,这意味着不可能像框架创建LocalFileComparator那样检索basedir。从 LocalFileComparator 借用值似乎是唯一的方法。

开发人员可能会将 goldenFileComparator 更改为自己的实现,从而导致强制转换失败。应考虑这种情况。

最新更新