【问题标题】:Swift XCTest fails because plist file can not be foundSwift XCTest 失败,因为找不到 plist 文件
【发布时间】:2015-03-20 01:26:03
【问题描述】:

我目前正在用 Swift 构建一个 iOS 框架项目。我还有一个自己的测试构建目标。我还在测试构建目标中添加了一个新的 TestSettings.plist 文件。在那里我存储了 api 调用的用户名/密码。 但是 XCTest 现在总是失败,因为它无法加载 plist 文件。

我已经检查过 plist 文件是否在 .xctest 文件夹/包中

我尝试使用以下代码加载 plist 文件:

if let path = NSBundle.mainBundle().pathForResource("TestSettings", ofType: "plist") {
            settingsDictionary = NSDictionary(contentsOfFile: path)
} else {
            XCTFail("API: getAuthToken no TestSettings.plist file found")
}

任何想法我做错了什么,或者有没有其他方法可以不将用户名/密码放入测试用例?

【问题讨论】:

    标签: ios swift xctest


    【解决方案1】:

    我发现了问题,在 XCTest 中无法访问 mainBundle。我不得不使用以下代码来修复它:

    let path = NSBundle(forClass: self.dynamicType).pathForResource("TestSettings", ofType: "plist")
    

    【讨论】:

      【解决方案2】:

      在设计单元测试时,你必须问自己最基本的事情是:你想测试什么

      您想测试您的逻辑的功能,并且希望它快速。 您不想测试 *.plist 文件,也不想测试文件是否在正确的位置。

      除非确实需要,否则不要使用文件(例如复杂的算法输入数据)。

      您应该使用 mocks 代替任何数据库/互联网/文件通信。

      如果您不知道什么是模拟,这里有一个快速概述:

      http://www.codeproject.com/Articles/686935/Unit-testing-with-Mock-objects-Rhino-Mocks

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        • 2014-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多