如何管理 XCTests 中使用的静态 json 文件

How to manage static json files used in XCTests

我在单元测试中使用的项目中有一堆静态 json 文件来代替 API 响应。为了让它工作,他们的目标成员必须是生产目标,否则当我在测试中调用 Bundle.main.url(forResource: fileName, withExtension: "json") 时找不到文件。我可以看到它们在生产目标的 'build phases' 中的 'copy bundle resources' 列表中。

但是除了测试套件外,项目不需要这些文件,我不希望它们在发布版本中占用 space。

如果测试目标仅需要这些文件,那么在我的项目中管理这些文件的最佳方式是什么?

我建议使用本地 swift 包。 https://developer.apple.com/documentation/swift_packages/organizing_your_code_with_local_packages

测试资源属于测试包。通过指定测试文件访问测试包,而不是 Bundle.main 仍然是生产包。

例如,在 XCTestCase 子类中,您可以这样做:

Bundle(for: type(of: self))

然后您可以查询该包以获取存储的 JSON 个示例。