如何在 Dart/Flutter 上的测试中导入测试实用程序文件
How to import test util files inside of your tests on Dart/Flutter
我有一些单元测试和一些 class 与 仅 相关的测试,例如我的模型的工厂,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';
或:
import 'package:myapp/src/test_utils/mocks.dart';
唯一有效的
导入它们的唯一方法是通过相对路径,例如:
import '../../test_utils/mocks.dart';
问题
我很想了解这里发生了什么,为什么我的测试无法在导入中找到测试实用程序 class 以及执行此操作的最佳方法是什么。
在 pub 包布局中,package:
URI 格式用于 lib/
下的文件。这些是可以从 外部 包使用的“public 库”,因此它们是与包名称关联的库。 test/
下的文件是包私有的,不需要通过包名称引用 - 它们只能 可以 从邻近的文件和目录中引用,因此相对导入就足够了. package:
URI 格式的设计主要是因为它允许导入到没有稳定相对路径的其他包。
见https://dart.dev/tools/pub/package-layout#public-libraries
使用相对导入是推荐的方法。
我有一些单元测试和一些 class 与 仅 相关的测试,例如我的模型的工厂,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';
或:
import 'package:myapp/src/test_utils/mocks.dart';
唯一有效的
导入它们的唯一方法是通过相对路径,例如:
import '../../test_utils/mocks.dart';
问题
我很想了解这里发生了什么,为什么我的测试无法在导入中找到测试实用程序 class 以及执行此操作的最佳方法是什么。
在 pub 包布局中,package:
URI 格式用于 lib/
下的文件。这些是可以从 外部 包使用的“public 库”,因此它们是与包名称关联的库。 test/
下的文件是包私有的,不需要通过包名称引用 - 它们只能 可以 从邻近的文件和目录中引用,因此相对导入就足够了. package:
URI 格式的设计主要是因为它允许导入到没有稳定相对路径的其他包。
见https://dart.dev/tools/pub/package-layout#public-libraries
使用相对导入是推荐的方法。