由于无法找到 plist 文件,Swift XCTest 失败

3
我目前正在使用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")
}

有什么想法是我做错了,或者有其他方法可以不将用户名/密码放入测试用例中吗?
2个回答

6

我找出了问题所在,XCTest中无法访问mainBundle。我不得不使用以下代码来解决:

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

2
设计单元测试时,你需要最基本的问题是:你想要测试什么?你想要测试你的逻辑功能,并且希望它快速运行。你不需要测试 *.plist 文件,也不需要测试文件是否在正确位置。除非你真正需要使用文件(例如,算法的复杂输入数据),否则不要使用文件。对于任何数据库/互联网/文件通信,应该使用模拟对象。如果你不知道模拟对象是什么,可以查看以下链接:http://www.codeproject.com/Articles/686935/Unit-testing-with-Mock-objects-Rhino-Mocks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接