XCUITest 从捆绑形式 UITest 目标中读取文件
Posted
技术标签:
【中文标题】XCUITest 从捆绑形式 UITest 目标中读取文件【英文标题】:XCUITest Reading file from bundle form UITest target 【发布时间】:2021-05-17 12:59:26 【问题描述】:我正在尝试读取 Xcode 包中存在的 plist 文件,
方法 #1(无效):
我使用的是static variable
(下面屏幕截图中的第 23 行),它返回包中存在的文件路径,它不起作用
方法 #2(无效):
使用Bundle.main
读取文件不起作用
方法 #3(工作解决方案):
当我用相同的代码行编写function
(下面屏幕截图中的第 30 行)时,它可以工作!
最初我尝试使用 static variable
读取文件并浪费了 2 天,直到我发现使用 function
而不是 static variable
可以工作。
问题:
-
我找不到任何相关文档,谁能解释一下为什么这个方法 #1 不起作用?
type(of:)
是不是特定于 object
类型而不是 class
类型?
【问题讨论】:
【参考方案1】:从 UITest 目标读取文件的正确方法是
正确的文件读取方式:
func getPath() -> String?
let bundle = Bundle(for: type(of: self))
let path = bundle.path(forResource: "MockMDM", ofType: "plist")
return path
也让我分享看起来正确但不起作用的代码
错误的文件读取方式:
static var mockMDMFile: [String: Any]?
if let path = Bundle.main.path(forResource: "MockMDM", ofType: "plist")
let mdmDict = NSDictionary(contentsOfFile: path) as! [String: Any]
return mdmDict
return nil
走错路失败的原因:
应用有多个包,UITest 目标中的文件将是不同包的一部分不是主包 (Bundle.main
)。
【讨论】:
为什么我看不到问题和答案的区别? ? :D 我找到了答案,但不知道它为什么起作用,所以发布了有问题的工作和非工作代码以及我在答案中的发现,以便对面临类似问题的人有所帮助: D、再读一遍问题,有2个问题@MojtabaHosseini 让我为你重写它☺️ @MojtabaHosseini以上是关于XCUITest 从捆绑形式 UITest 目标中读取文件的主要内容,如果未能解决你的问题,请参考以下文章