Vorteile der Verwendung von ScalaFutures aus ScalaTest gegenüber Await.result

8

Ich hatte kürzlich eine Diskussion mit Kollegen über die Verwendung oder whenReady oder .futureValue von ScalaFutures in ScalaTest versus Await.result in Tests. Neben der Lesbarkeit, der Konsistenz in der Konfiguration (Timeouts) und dem Ergebnis-Scoping bei der Verwendung von whenReady gibt es weitere bemerkenswerte Vorteile der Verwendung von ScalaFutures-Methoden gegenüber Await.result?

Ich habe bemerkt, dass ScalaFutures eine "Polling" -Technik verwenden, anstatt wie Await zu blocken, aber kann jemand die Vorteile näher erläutern?

    
jgagnon1 05.12.2014, 15:50
quelle

1 Antwort

0

Wenn Sie Await.result Sie den aufrufenden Thread blockieren. Der Effekt wäre am auffälligsten, wenn Sie Ihre Tests auf Single-Thread-Basis ausführen (z. B. mit einer SBT-Einstellung wie parallelExecution in Test := false ).

Die von ScalaFutures durchgeführte Abfrage wird über einen Scheduler (afaik) durchgeführt; Daher blockiert es keinen Thread. Als Ergebnis können Sie eine Anzahl gleichzeitig ablaufender Tests haben, die weit über die Threads hinausgehen, die in jedem ExecutionContext verfügbar sind, auf dem die Tests tatsächlich ausgeführt werden.

    
Idan Waisman 19.09.2016, 17:53
quelle

Tags und Links