получаю странный поток 1: EXC_BAD_ACCESS (code = 1, address = 0x9) ошибка сбоя в swift - PullRequest
5 голосов
/ 13 октября 2019

Я пишу юнит-тест для 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 

1 Ответ

1 голос
/ 14 октября 2019

Я не знаю, почему это происходит, и я не знаю, почему приведенное ниже решение работает для этогоесли у кого-то есть дополнительная информация, я буду рад узнать.

Решение проверка Allow testing Host Application APIs для проверки цели в Xcode, исправил ошибку.

...