Verstehen und reduzieren Sie die Testausführungszeit mit dem ConcurrencyExtras-Paket in SwiftIOS

Programmierung für iOS
Guest
 Verstehen und reduzieren Sie die Testausführungszeit mit dem ConcurrencyExtras-Paket in Swift

Post by Guest »

In meiner App für Unit-Tests verlässt sich unser Team stark auf das Tool zur Ausführung asynchroner Tests – ConcurrencyExtras – withMainSerialExecutor
Dieses Tool bietet die Möglichkeit, Testcode im Haupt-Thread zu starten, und das könnten wir auch Fügen Sie den Block „await Task.yield() hinzu, um auf den Abschluss eines längeren Vorgangs zu warten.
Es funktioniert gut, aber es scheint, dass die Testausführungszeit gestiegen ist, was ich verkürzen möchte Ausführung Zeit.
Bisher wurde hier nur die Lösung vorgeschlagen, die ich gefunden habe: Hinzufügen

Code: Select all

override func invokeTest() {
withMainSerialExecutor {
super.invokeTest()
}
}
Zu Beginn jedes Tests und mit MainSerialExecutor überall entfernen.
Es funktioniert und jetzt laufen meine asynchronen Tests schneller.
Meine Frage ist: Warum hat es die Ausführungszeit für asynchrone Tests verkürzt? Was ich getan habe, war im Grunde, die Ausführung jedes Tests im Hauptthread zu erzwingen, aber das manuelle Hinzufügen des withMainSerialExecutor-Blocks hat das Gleiche bewirkt. Vielleicht hat jemand eine andere Lösung, um die Ausführungszeit asynchroner Tests zu verkürzen?
Beispiel für einen Test, der von der „langen“ Zone (mehr als 0,1 Sekunden) in die kurze Zone verschoben wurde

Code: Select all

func testHasLoaded() async {
/// Arrange
sut = makeVM()
var hasLoaded = String()
sut.dataHasFinishedLoading = {
hasLoaded = "hasLoaded"
}

/// Assert
await Task.megaYield()

XCTAssertEqual(hasLoaded, "hasLoaded")
}
Original (0,11 Sekunden):

Code: Select all

func testThatViewModelDataHasFinishedLoadingProject() async {
withMainSerialExecutor {
/// Arrange
sut = makeVM()
var hasLoaded = String()
sut.dataHasFinishedLoading = {
hasLoaded = "hasLoaded"
}

/// Assert
await Task.megaYield()

XCTAssertEqual(hasLoaded, "hasLoaded")
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post