[英]getting strange Thread 1: EXC_BAD_ACCESS (code=1, address=0x9) crash error in swift
我正在为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
我不知道为什么会发生这种情况,也不知道为什么下面的解决方案适用。 如果有人有更多信息,我会很高兴知道。
解决方案检查Allow testing Host Application APIs
for test target in Xcode,修复错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.