2016-05-04 4 views
0

Wenn ich groovy Unit Tests als Klassen schreiben dann Maven wird diese laufen. Aber wenn ich den Groovy Unit Test als Skript schreibe, ignoriert Maven sie. Mein Pom hat Abhängigkeiten von groovy-all und junit und verwendet das Maven-Compiler-Plugin. Ich kann groovy Skript Tests von der Befehlszeile mit GroovyTestSuite ausführen, wo ich die Skripte hinzufügen und dann ausführen. Aber möchte dies als Teil eines Maven Builds tun. Ich habe diese Frage Execute external groovy script from Maven gesehen, aber ist nicht ganz dasselbe. Grüße, JohnVerwenden Sie groovy Skript für Maven Unit Test

+0

Sind die Tests in der groovigen Skriptversion mit einem bestimmten Framework (z. B. Spock)? Wenn nicht, sind sie mit JUnit-Annotationen versehen oder schreiben Sie nur Assertions, die das Script beim Ausführen ausführt? – alexanderific

+0

Es gibt kein Framework (glaube ich) - ich benutze nur groovy.util.GroovyTestCase und dann groovige Skripte. Wie ich schon sagte, läuft es auf der Kommandozeile, aber Maven sieht diese nicht als Testfälle. Also gibt es ein Plugin, das ich verwenden sollte, die Skripte im Gegensatz zu Klassen abholen wird? – John

Antwort

1

Groovy-Skripte nicht kompilieren .class und damit die Maven todsichere/Fail-safe-Plug-In für Einheit/Integrationstests werden nichts von der testCompile Phase hat tatsächlich zu laufen. Wenn Sie sie als groovige Skripte schreiben, müssen Sie ein anderes Maven-Plugin verwenden, um nur die Skripte auszuführen ... aber wahrscheinlich wird das Ergebnis des JUnit-Ergebnisses nicht ausgegeben, das Sie normalerweise von etwas wie Surefire erhalten würden.

Da GroovyTestSuite eine Klasse für sich ist und Maven die Tests ausführen soll, würde ich vorschlagen, dass Sie Ihre Tests als eigentliche Klassendateien statt als Skripte schreiben. Sie können die Tests auch so starten, dass sie über die Befehlszeile mit maven ausgeführt werden, damit Ihre Anforderung nicht beeinträchtigt wird. Wenn Sie diesen Weg gehen, können Sie in Zukunft weitere Frameworks (wie z. B. Spock!) Verwenden und bleiben auch innerhalb der Grenzen der traditionellen Maven/JUnit-Konventionen.

Nun, wenn Sie in der Tat auf Groovy-Skripte als Ihre Tests festgelegt sind, könnten Sie etwas Ähnliches wie this solution tun und binden das Ziel auszuführen, konfiguriert ist, um Punkt an Ihrem groovy-Skript (n), auf die test Phase. Ich würde jedoch nicht empfehlen, diesen Weg zu gehen, es sei denn, Sie haben einen sehr expliziten Grund, im groovigen Skriptbereich für Ihre Testsuiten zu bleiben. Wenn Sie Ihre Testsuiten als groovige Klassen statt als Skripte schreiben, sollten Sie keine zusätzlichen groovigen Funktionen verlieren.

+0

Ja, ich denke du hast Recht - ich bleibe am besten beim Unterricht. Ich mag die Idee, ein einfaches Skript zu schreiben, aber ich denke, der zusätzliche Aufwand überwiegt das. Vielen Dank für die Antwort. – John