【问题标题】:Swift Xcode 6 gives SIGABRT when TestingSwift Xcode 6 在测试时提供 SIGABRT
【发布时间】:2015-04-12 03:41:46
【问题描述】:

我最近更新到了最新版本的 Xcode (6.3),现在无法运行我们之前的测试。

它会抛出一个带有以下信息的 SIGABRT:

无法将“MyApplication.MyPSClass”(0x109d7f410) 类型的值转换为“MyApplicationTests.MyPSClass”(0x1197ddec0)。

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()
    }

}

为什么会发生这种情况,我该如何解决?提前致谢!

【问题讨论】:

    标签: ios xcode swift parse-platform xctest


    【解决方案1】:

    发生了什么是在这一行:

    let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyPSClass

    您正在将 MyPSClass 转换为 MyApplicationTests.MyPSClass。你看不出来,因为 swift 使用隐式命名空间(它隐藏了 MyApplicationTests 命名空间)。您可以使用:

    let myPSInstance = MyPSClass.query().getObjectWithId("ParseObjectIDString") as! MyApplication.MyPSClass

    【讨论】:

    • 我已经尝试过了,但是,我收到一条错误消息,提示“使用未声明的类型 'MyApplication'”。 MyApplication 不是正确的命名空间,还是无法访问?我也尝试添加“import MyApplication”,但无济于事。这给出了错误“模块'MyApplication'中没有类型名称'MyPSClass'”。
    • 不是,但将其更改为 public class MyPSClass : PFObject, PFSubclassing { ... } 并没有帮助。它仍然尝试将其转换为 MyApplicationTests.MyPSClass。
    • 调用时仍需要使用 MyApplication.MyPSClass,既然它现在是公开的,它应该可以工作。
    • 谢谢!那行得通!我不得不在顶部添加import MyApplication,并且将我想要访问的所有方法和变量都公开,这似乎太过分了。这是否意味着类和方法在其各自的目标中被认为是公共的,但在我的测试目标中被认为是私有的?
    • 是的,可以从类本身访问私有方法。您必须将内容公开,以便您的测试目标可以访问它们。万岁,玩得开心!
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多