得到奇怪的线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x9)快速崩溃崩溃错误

问题描述 投票:5回答:1

我正在编写MyClass的单元测试。考虑下面的代码:

MyClass.swift

class MyClass {    
    let collectionPeriod: TimeInterval
    var previousCollectDate: Date?

    init(period: TimeInterval, previousCollectDate: Date?) {
        self.collectionPeriod = period
        self.previousCollectDate = previousCollectDate
    }

    func schedule() { }

    func collect() { }
}

MyClassTests.swift

import XCTest
@testable import MyModule

class CollectableTests: XCTestCase {

    var sut: MyClass!

    override func setUp() { }

    override func tearDown() {
        self.sut = nil
    }

    func testSchedule_NotScheduledBefore_CollectExecutesAfterCollectionPeriod() {
//        let _ = Collectable(period: 11, previousCollectDate: nil)

        self.sut = MockCollectable(suiteName: self.testSuiteName)

        self.sut?.schedule()
    }
}

class MockCollectable: Collectable {

    init(suiteName: String) {
        super.init(period: 5.0, previousCollectDate: Date())
    }    
}

奇怪的事情在这里发生,当我在这种情况下执行测试时,出现崩溃错误self.sut = MockCollectable(suiteName: self.testSuiteName)但是当我添加(取消注释)行时let _ = Collectable(period: 11, previousCollectDate: nil)实际上,除了创建一个在代码中未使用的实例外,崩溃什么都没有。有什么主意吗?

也许调试导航器信息可能会有用:

#0  0x00000001d0dd2aec in swift_checkMetadataState ()
#6  0x0000000104858398 in type metadata accessor for CollectableTests.MockCollectable ()
#7  0x00000001048582c8 in CollectableTests.testSchedule_NotScheduledBefore_CollectExecutesAfterCollectionPeriod() 
#51 0x00000001c7a49d0c in UIApplicationMain ()
#52 0x00000001025882b0 in main 
ios swift unit-testing exc-bad-access xctestcase
1个回答
0
投票

我不知道为什么会这样,也不知道为什么下面的解决方案可以解决这个问题。如果有人有更多信息,我将很高兴知道。

解决方案在Xcode中检查Allow testing Host Application APIs作为测试目标,已修复错误。

© www.soinside.com 2019 - 2024. All rights reserved.