Prüfen Sie, ob sich in Swift 3 @ die richtige Versandwarteschlange befinde

Ich habe ein paar Unit-Tests, in denen ich testen möchte, ob in der richtigen Versandwarteschlange ein Rückruf aufgerufen wird.

In Swift 2 habe ich die Bezeichnung der aktuellen Warteschlange mit meiner Testwarteschlange verglichen. Jedoch in Swift 3 dasDISPATCH_CURRENT_QUEUE_LABEL Konstante existiert nicht mehr.

Ich habe das @ gefunddispatch_assert_queue Funktion. Das scheint das zu sein, was ich brauche, aber ich bin nicht sicher, wie ich es nennen soll.

Mein Swift 2-Code:

let testQueueLabel = "com.example.my-test-queue"
let testQueue = dispatch_queue_create(testQueueLabel, nil)

let currentQueueLabel = String(UTF8String: dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL))!
XCTAssertEqual(currentQueueLabel, testQueueLabel, "callback should be called on specified queue")

Aktualisieren

Ich war verwirrt über den Mangel an Autovervollständigung, aber es ist möglich, @ zu verwend__dispatch_assert_queue:

if #available(iOS 10.0, *) {
  __dispatch_assert_queue(test1Queue)
}

Während dies für Komponententests funktioniert, stoppt es den gesamten Prozess ärgerlich mit einemEXC_BAD_INSTRUCTION anstatt nur einen Test nicht zu bestehen.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage