我最近更新到最新版本的 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/

10-12 14:38