Swift XCTest 失败,因为找不到 plist 文件

Swift XCTest fails because plist file can not be found

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

我已经检查过 plist 文件在 .xctest 中 folder/bundle

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

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

知道我做错了什么,或者有其他方法可以不将 username/password 放入测试用例中吗?

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

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

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

您应该使用 mocks 代替任何 database/internet/file 通信。

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

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

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

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