2016-09-18 7 views
1

Ich schreibe eine Reihe von groovigen Skripten, die als Teil einer Jenkins Pipeline Library verwendet werden sollen. Momentan benutze ich einfach alte JUnit, um sie zu testen, würde aber gerne zu Spock wechseln. Ich führe einfach die Tests von der Befehlszeile aus, indem ich das folgende groovige Skript aufruft.Verwendung von Spock über die Befehlszeile

import groovy.util.AllTestSuite 
import junit.textui.TestRunner 

System.setProperty(AllTestSuite.SYSPROP_TEST_DIR, "./tests") 
System.setProperty(AllTestSuite.SYSPROP_TEST_PATTERN, "**/*Test.groovy") 

TestRunner.run(AllTestSuite.suite()) 

Ich versuche herauszufinden, was das äquivalente Skript wäre, um Spock-Spezifikationen auszuführen. Mein erster Versuch war, die SYSPROP_TEST_PATTERN zu "**/*Spec.groovy zu wechseln. Ich habe eine ...Spec.groovy Datei geschrieben und unter ./tests sitzen, die wie folgt aussieht:

@Grab(group='org.spockframework', module='spock-core', version='1.0-groovy-2.3') 
import spock.lang.* 

class UtilsSpec extends Specification { 

    def "Just testing"() { 

    expect: 
     1 + 1 == 2 

    } 
} 

Wenn ich meine groovy Skript aufrufen obwohl ich:

java.lang.RuntimeException: Sie wissen nicht, wie man behandeln /SourcCode/jenkins/pipeline-utils/tests/JustTestingSpec.groovy als JUnit-Test

, die Sinn macht. Ich muss Sputnik verwenden, aber ich habe mir die Spock- und Sputnik-Quelle und das Spock-Beispielprojekt angeschaut, aber alle nehmen an, dass Sie Maven oder Gradle verwenden. Ich kann nicht den richtigen Weg finden, Sputnik direkt anzurufen. Irgendwelche Ideen?

+0

Sehen Sie dieses Beispiel auf GitHub: https://gist.github.com/ysb33r/5825457 – BalRog

+0

@BalRog, schaute ich auf Ihr Beispiel und es ist ein Anfang, aber was es von den oben genannten fehlt ist die Fähigkeit, automatisch zu finden und führe alle Spezifikationen aus. –

Antwort

0

Obwohl das, was Sie fragen, möglich ist und BalRog bereits eine Lösung vorgeschlagen hat, ist es auf lange Sicht besser, wenn Sie Gradle oder Maven verwenden, um Ihre Tests über die Befehlszeile auszuführen.

Alle Jenkins-Tutorials, die Ihnen begegnen, sprechen über Maven und/oder Gradle und daher wäre es viel sinnvoller, ein Build-System als benutzerdefinierte Skripte zu verwenden.

+0

Ich denke, ich kann herausfinden, wie man das mit Maven oder Gradle macht, aber ich weiß nicht, warum ich das machen möchte. Welchen Mehrwert hat das Ziehen eines solchen Systems? Ich habe Gradle nicht oft benutzt, aber ich weiß, dass Maven kaum leicht ist. Wie viel von der Welt muss ich herunterladen, nur um ein paar Tests durchzuführen? –

+0

Wenn Sie Gradle oder Maven verwenden, ist die einzige Bibliothek, die sie herunterladen, Spock (und jede andere von Ihrer App verwendete Bibliothek). Gradle kommt mit einem Gradle Runner, der sich auch selbst herunterlädt. – kazanaki

+0

"Ein solches System". Sowohl Maven als auch Gradle sind Build-Systeme für genau Ihren Zweck bestimmt. Würden Sie ein großes C-Projekt ohne make schreiben? Würden Sie ein großes C# -Projekt ohne Msbuild schreiben? Würden Sie ein großes Javascript-Projekt ohne node.js und Winkelmesser schreiben? – kazanaki

Verwandte Themen