【问题标题】:XCUITest Reading file from bundle form UITest targetXCUITest 从捆绑形式 UITest 目标中读取文件
【发布时间】: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. 我找不到任何相关文档,谁能解释一下为什么这个方法 #1 不起作用?
  2. type(of:) 是不是特定于 object 类型而不是 class 类型?

【问题讨论】:

    标签: ios xcode bundle ui-testing xcuitest


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多