2013-03-14 15 views
5

Ich muss eine benutzerdefinierte Testkonfiguration in sbt definieren, die Test ausführt, aber mit einigen zusätzlichen Einstellungen. Ich habe mich umgesehen und versucht herauszufinden, wie das geht, aber ich kann es nicht richtig verstehen.Definieren Sie benutzerdefinierte Testkonfigurationen in sbt

Was ich möchte, ist etwas wie das: > test, die die normale Testaufgabe ausführen würde und > pipelinetest, die genau das gleiche wie Test wäre, nur mit (javaOptions += "-Dpipeline.run=run".

Ich habe herausgefunden, wie das die javaOptions für Test-Set, wie folgt aus: javaOptions in test += "-Dpipeline.run=run" so, was ich ist, dies zu tun in der Lage sein würde: javaOptions in pipelinetest += "-Dpipeline.run=run"

Wie würde ich pipelinetest dieses Ziel zu erreichen definieren? Muß das eine neue Aufgabe sein? Oder wäre dies eine Einstellung in test. Ich bin neu zu sbt und ziemlich verwirrt darüber im Moment, und das Lesen der Dokumentation hat nicht geholfen, so würde jede Hilfe sehr geschätzt werden.

+2

Siehe http://www.scala-sbt.org/release/docs/Detailed-Topics/Testing.html, insbesondere die Abschnitte über zusätzliche Testkonfigurationen und gemeinsame Quellen. –

Antwort

0

Ich habe nur eine unvollständige Antwort, aber ich dachte, das könnte nützliche Informationen sein. Ich habe gerade versucht, etwas Ähnliches für den SBT-Build in Spark zu tun - ich wollte eine Möglichkeit haben, Tests mit einem Debugger auszuführen. Mark Harrahs Kommentar wies mich in die richtige Richtung. Die change I made was:

lazy val TestDebug = config("testDebug") extend(Test) ... baseProject .configs(TestDebug) .settings(inConfig(TestDebug)(Defaults.testTasks): _*) .settings(Seq( javaOptions in TestDebug ++= "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" .split(" ").toSeq))

Dies ließ meine üblichen Beschwörungen test, testOnly usw. allein, aber jetzt kann ich auch testDebug:testOnly ... laufen, was die zusätzliche Optionen oben definiert verwenden würde. (es hat wahrscheinlich auch testDebug:test, etc. mit diesen zusätzlichen Optionen erstellt, die nicht sinnvoll sind, aber naja.)

Ich habe nicht wirklich verstanden, warum, aber ein wichtiger Teil für mich, um dies zu arbeiten war zu Verwenden Sie inConfig(TestDebug)(Defaults.testTasks) statt inConfig(TestDebug)(Defaults.testSettings).

In meinem Fall geriet ich in Schwierigkeiten, herauszufinden, wie man (a) es für eine Multi-Projekt-Build arbeiten und (b) unser Build ist noch seltsamer b/c basiert auf einer POM-Datei, die macht Die Projektdefinitionen unterscheiden sich von jedem Beispiel.

Wie üblich, ist mein Problem mit sbt, dass ich Informationen finde, die verwandt scheinen, aber mein Build hat einige ungewöhnliche Aspekte, die es mir unmöglich machen, die Antwort vollständig zu verfrachten; und obwohl es so aussieht, als ob ich triviale Modifikationen brauche, ohne ein gründliches Verständnis, ist es schwierig, die Beispiele zu modifizieren.

Verwandte Themen