2013-03-11 18 views
9

Funktionelle Tests mit der TestServer Klasse des Play Framework scheinen nur in der Play-Konsole zu funktionieren.Paralleler Testlauf für Spielframework

Leider führt der Lager-Testläufer in der Play-Konsole, der durch den Befehl play test ausgeführt wird, die Tests in der Sequenz aus, und das dauert eine Menge Zeit. Ich denke, sie würden schneller laufen, wenn sie parallel ausgeführt würden.

Gibt es eine Möglichkeit, die Tests parallel auszuführen?

Update: SBT unterstützt die Ausführung von Tests parallel und in verschiedenen JVMs, die es möglich machen, mehrere Instanzen parallel zu haben, wenn sie theoretisch an verschiedenen Ports lauschen. Es scheint, dass Play diese Einstellungen ignoriert. Siehe mein gemeldetes Problem: https://github.com/playframework/Play20/issues/849. Das Kopfgeld gilt jemandem, der einen Weg zeigt, wie das Play Framework diese SBT-Testeinstellungen respektiert, um Junit-basierte Tests parallel in verschiedenen JVMs mit einer Build.scala-Datei auszuführen.

Antwort

0

Die Standardeinstellung specs2 von Play2 lässt keine parallele Ausführung zu. https://github.com/playframework/Play20/blob/master/framework/project/Build.scala#L290

parallelExecution in Test := false 

So müssen Sie diese Einstellung in Ihrem Build.scala außer Kraft zu setzen.

parallelExecution in Test := true 

Aber ich denke, Sie nicht Test parallel ausführen können, weil TestServer Port benötigen. Wenn Sie den Test parallel ausführen möchten, sollten Sie den Port in jedem Testfall ändern.

+0

Ich fügte hinzu, wie dies die Einstellung, aber es scheint keine Wirkung haben: val main = play.Project (appName, appVersion, appDependencies) .settings ( parallelExecution in Test: = true ) Diese verpflichten zeigt auch, dass Laufen Mehrere Testserver haben mehr Probleme als ein in Konflikt stehender Port: https://github.com/playframework/Play20/commit/b951b22a76b51ea1235af3525cdf4d48edd19ad2 – Tamas

+0

'fork in Test: = true' würde das Problem der parallelen Ausführung mehrerer TestServer-Instanzen lösen. (Angenommen, die Portzuordnung wurde berücksichtigt) Das Problem ist, dass Play meine Einstellungen ignoriert, die wie folgt definiert sind: 'val main = play.Project (...). Settings ([Einstellungen hier])' Selbst sehr einfache Tests das parallel ausgeführt werden kann, wird nicht parallel ausgeführt, unabhängig von der Einstellung parallelExecution in Test: = true. – Tamas

1

Nach Untersuchung des Themas scheint es, dass Play SBT Testkonfigurationseinstellungen ignoriert. Ich meldete das Problem hier:

https://github.com/playframework/Play20/issues/849

Ich will nicht meine Antwort akzeptiert markieren, weil ich hoffe, dass ich etwas übersehen habe und dass es möglich Tests parallel im Spiel Rahmen auszuführen.

Verwandte Themen