Xcode 10:在项目目标和单元测试目标中加载相同的.xml文件

时间:2018-11-10 13:08:30

标签: ios swift xcode macos unit-testing

我尝试在项目目标和单元测试目标中加载相同的.xml文件。

似乎是类似这样的问题:Xcode. Image resources added to a test target are not copied into the tests bundle

在项目目标中,此代码片段运行良好。我只需要将“ xmlString.xml”文件添加到“复制文件”(参见图1)。

func parseFile() {
   let stringPath = Bundle.main.path(forResource: "xmlString", ofType: "xml")
   let url = NSURL(fileURLWithPath: stringPath!)
   ...
}

Image1

如果我运行单元测试目标中插入的代码,则会收到错误消息,因为找不到.xml文件。我试图将.xml文件添加到“副本捆绑资源”中,但没有成功(参见图2)。

image 2

使其正常工作的唯一方法是使用绝对路径

func parseFile() {
   let stringPath: String? = "/Users/.../Documents/Git/.../.../.../.../xmlString.xml"
   let url = NSURL(fileURLWithPath: stringPath!)
   ...
}

是否可以使用Bundle.main.path(forResource: "xmlString", ofType: "xml")函数代替绝对路径?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以像这样获得项目的捆绑包:

let projectBundle = Bundle(for: AnyClassInMyProject.self)

用项目中实际类的名称替换AnyClassInMyProject

然后您可以像这样获取.xml文件的路径:

let stringPath = projectBundle.path(forResource: "xmlString", ofType: "xml")