如何获得一个File
或Uri
来表示Flutter中当前正在执行的单元测试的路径?更具体地说,就是运行测试的文件夹。
该路径可能不一定是当前执行的 * 代码 * 的位置,例如在代码在文件中而不是在当前执行的测试中运行的情况下。Platform.script
和Directory.current
都不能在单元测试中工作。
例如,您可能希望创建自己的黄金测试实现(例如存储并比较文本文件而不是图像),并且需要在当前测试的目录中创建一个文件。
我已经知道了这个问题的答案,我在下面贴了出来,但是看起来很“非官方”。这篇文章的目的是1)看看我的答案是否可以改进,2)通过记录我的解决方案来帮助其他人。
1条答案
按热度按时间voj3qocg1#
使用本地文件比较器中的
basedir
。输出:
file:///path/to/project/your_project/test/path/to/test/
goldenFileComparator
是一个全局变量,它表示比较golden tests的当前方法。默认情况下,在执行测试时,Flutter测试框架将其设置为LocalFileComparator
,在创建时提供了基本测试目录。有关实现的更多详细信息,请参见the docs。这个比较器的赋值是在测试框架内部完成的,这意味着不可能像框架创建LocalFileComparator那样检索basedir。从LocalFileComparator中借用值似乎是唯一的方法。
开发人员有可能将goldenFileComparator更改为他们自己的实现,从而导致强制转换失败。应该考虑这种情况。