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



我在一个项目中有一堆静态json文件,我正在单元测试中使用这些文件来代替API响应。为了实现这一点,他们的目标成员身份需要是生产目标,否则当我在测试中调用Bundle.main.url(forResource: fileName, withExtension: "json")时,就找不到文件。我可以看到它们在生产目标的"构建阶段"的"复制捆绑包资源"列表中。

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

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

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

例如,在XCTestCase子类中,可以执行以下操作:

Bundle(for: type(of: self))

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

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

最新更新