我目前正在Swift中构建一个iOS框架项目。我还有一个自己的测试构建目标。我还在测试构建目标中添加了一个新的TestSettings.plist文件。我存储了api调用的用户名/密码。 但是XCTest现在总是失败,因为它无法加载plist文件。
我已经检查过plist文件是否在.xctest文件夹/ bundle
中我尝试使用以下代码加载plist文件:
if let path = NSBundle.mainBundle().pathForResource("TestSettings", ofType: "plist") {
settingsDictionary = NSDictionary(contentsOfFile: path)
} else {
XCTFail("API: getAuthToken no TestSettings.plist file found")
}
任何想法我做错了,还是有其他方法不将用户名/密码放入测试用例?
答案 0 :(得分:4)
我发现了问题,无法访问XCTest中的mainBundle。我不得不使用以下代码来修复它:
let path = NSBundle(forClass: self.dynamicType).pathForResource("TestSettings", ofType: "plist")
答案 1 :(得分:2)
在设计单元测试时,您必须问自己最基本的事情是:您想测试什么?
您希望测试逻辑的功能,并希望它快速。 您不想测试* .plist文件,并且您不想测试文件是否位于正确的位置。
除非您确实需要(例如算法的复杂输入数据),否则不要使用文件。
您应该使用模拟代替任何数据库/互联网/文件通信。
如果您不知道嘲讽是什么,请快速了解一下:
http://www.codeproject.com/Articles/686935/Unit-testing-with-Mock-objects-Rhino-Mocks