我最近更新到最新版本的 Xcode (6.3),现在无法运行我们以前可以运行的测试。
它抛出一个带有以下信息的 SIGABRT:
MyApplicationTests 是测试目标,MyApplication 是正常的应用程序目标。
MyApplication 使用 Parse 作为我们的后端。此错误是否可能是子类化功能的结果?
MyClass 将 PFObject 和 PFSubclassing 子类化,如 Parse 的子类化文档中所述:
class MyPSClass : PFObject, PFSubclassing { ... }
显示“线程 1:SIGABRT”的行是:
let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyPSClass
包含此行的测试类文件如下所示:
import UIKit
import XCTest
class MyClassTests: XCTestCase {
override func setUp() {
super.setUp()
//...
}
func testInit() {
let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyPSClass
//...
}
override func tearDown() {
super.tearDown()
}
}
为什么会发生这种情况,我该如何解决?提前致谢!
最佳答案
发生的事情是在这一行:let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyPSClass
您正在将 MyPSClass 转换为 MyApplicationTests.MyPSClass。您无法分辨,因为 swift 使用隐式命名空间(隐藏 MyApplicationTests 命名空间)。您可以使用:let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyApplication.MyPSClass
关于ios - Swift Xcode 6 在测试时提供 SIGABRT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29585710/