如何在 Dart/Flutter 测试中导入测试 util 文件

Dan*_*ico 3 unit-testing dart flutter flutter-test

我有一些单元测试和一些仅与测试相关的类,例如我的模型的工厂,mockito 的一些扩展等等......

问题是,当我尝试从测试中导入这些文件时,我可以使用相对路径导入它们,假设我有这个实用程序:

  • test/src/test_utils/factories.dart
  • test/src/test_utils/mocks.dart
  • test/src/test_utils/mockito_extensions.dart

我怎么做不到

但是当我尝试从测试中导入它们时,它找不到它们

import 'package:myapp/test_utils/mocks.dart';
Run Code Online (Sandbox Code Playgroud)

或者:

import 'package:myapp/src/test_utils/mocks.dart';
Run Code Online (Sandbox Code Playgroud)

唯一有效的

导入它们的唯一方法是通过相对路径,例如:

import '../../test_utils/mocks.dart';
Run Code Online (Sandbox Code Playgroud)

问题

我很想了解这里发生了什么,为什么我的测试无法在导入中找到测试 utils 类,以及执行此操作的最佳方法是什么。

Nat*_*sch 5

在 pub 包布局中,package:URI 格式用于lib/. 这些是可以从包外部使用的“公共库” ,因此它们是与包名称相关联的库。下面的文件test/是包私有的,不需要通过包名称引用 - 它们只能相邻文件和目录引用,因此相对导入就足够了。URI格式package:的设计主要是因为它允许导入其他包,而这些包没有稳定的相对路径。

请参阅https://dart.dev/tools/pub/package-layout#public-libraries

推荐使用相对导入的方法。