如何管理 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 个示例。
我在单元测试中使用的项目中有一堆静态 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 个示例。