我们是否应该对 build_runner 为 mockito 创建的 .mocks.dart 文件进行源代码控制

Should we source control the .mocks.dart files created by build_runner for mockito

由于 dart 中的 null safety,我们不得不更新我们的代码测试。我们正在使用 mockito 来模拟给定 class 的依赖关系。根据他们的 docs,我们决定使用 build_runner 方法来生成 Mock 类 的依赖项。这是在与测试文件相同的文件夹中创建扩展名为 .mocks.dart 的文件。由于这些是生成文件,我们应该对它们进行源代码控制,还是将它们放在 .gitignore?

实际上,这取决于您,但我建议将它们放在 .gitignore

Mock 不是访问密钥或某些内部配置等敏感信息,因此从这个角度来看无需担心。但是,在与团队合作并解决生成文件的冲突时,将生成的文件存储在源代码管理中可能会在某些时候导致合并冲突 - 好吧,这很奇怪,而不是你想要的。

由于可以生成文件,因此无需将 *.mocks.dart 添加到源代码控制存储库 - 您应该忽略它们。只需确保使用有关如何生成这些模拟的文档扩展项目的 ReadMe 文件,以便所有团队成员都知道在无法进行测试时发生了什么 运行。这样做的一个缺点是您的团队成员可能每次都需要在 运行 对新提取的代码进行测试之前重新生成这些模拟,但这是您应该接受任何代码生成的缺点。

根据我的经验,我正在使用像 json_serializablefreezed 这样的包,生成用于本地化的 Dart 文件,使用 flutter_gen 的资产——这些也需要从源代码生成文件(例如*.g.dart*.freezed.dart 个)。这些文件不存储在源代码管理中。此外,当为项目使用 CI/CD 工具时,您可以在构建代码之前触发 flutter pub run build_runner build 命令(或任何其他生成文件的命令),一切都应该顺利进行。