Ich habe ein Play! 2 für Scala-Anwendung, und ich verwende Specs2 für Tests. Ich kann alle Tests mit dem Befehl test
oder einer bestimmten Spezifikation mit test-only MyParticularSpec
ausführen.Spielen! Framework: anpassen, welche Tests ausgeführt werden
Was würde Ich mag einige besondere Spezifikationen zu tun ist, markieren oder sogar einzelne Methoden innerhalb einer Spezifikation, um Dinge wie:
- alle Tests ausführen, die nicht Integration sind (das heißt, die tun Zugriff auf externe Ressourcen nicht)
- alle Tests ausgeführt wird, die nicht auf externe Ressourcen im Schreibmodus zugreifen kann (aber immer noch die Lesetests)
- laufen alle Tests laufen aber eine gegebene
und so weiter.
Ich denke, so etwas sollte möglich sein, vielleicht durch Hinzufügen von Anmerkungen, aber ich bin mir nicht sicher, wie ich es machen soll.
Gibt es einen Mechanismus, um selektiv einige Tests durchzuführen und nicht andere?
EDIT Ich habe mich erhört, als test-only
verwenden. Trotzdem funktioniert die Befehlszeilenoption für die Task test
nicht. Im Anschluss an den sbt guide habe ich versucht, eine zusätzliche sbt-Konfiguration zu erstellen, wie
object ApplicationBuild extends Build {
// more settings
lazy val UnitTest = config("unit") extend(Test)
lazy val specs = "org.scala-tools.testing" %% "specs" % "1.6.9" % "unit"
val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA)
.configs(UnitTest)
.settings(inConfig(UnitTest)(Defaults.testTasks) : _*)
.settings(
testOptions in UnitTest += Tests.Argument("exclude integration"),
libraryDependencies += specs
)
}
Dies funktioniert, wenn ich Argumente ohne Optionen übergeben, zum Beispiel wenn ich Test.Argument("plan")
setzen. Aber ich konnte nicht herausfinden, wie man ein komplexeres Argument weitergibt. Ich habe versucht
Tests.Argument("exclude integration")
Tests.Argument("exclude=integration")
Tests.Argument("-exclude integration")
Tests.Argument("-exclude=integration")
Tests.Argument("exclude", "integration")
Tests.Argument("exclude \"integration\"")
und wahrscheinlich mehr. Noch immer keine Ahnung, was die richtige Syntax ist.
Kann jemand Argumente mit Optionen zu specs2 von sbt übergeben?
Vielen Dank! Was in der Dokumentation nicht gut erklärt wird, ist, dass wir hier ein einzelnes Argument (ausschließen) mit einigen Optionen haben (was auszuschließen ist), und es ist nicht klar, dass man es wie separate Argumente weitergeben sollte. Eigentlich hatte ich das versucht ('Tests.Argument (" exclude "," integration ")) aber id hat nicht funktioniert. Ich habe jetzt herausgefunden, dass das Problem nicht diese Deklaration war, sondern die Tatsache, dass ich das Tag am Anfang der Spezifikation deklarierte ("etwas" sollte {tag ("integration") ...) und nicht auf der einzelne fragment. Ich werde versuchen herauszufinden, was damit nicht funktioniert. – Andrea
Ich habe dieses Problem auch mit dem 'section'-Aufruf behoben, so dass jetzt alles funktioniert. Danke nochmal! :-) – Andrea
Gut. Ich habe die Dokumentation für die nächste Version von specs2 geändert: http://etorreborre.github.com/specs2/guide-SNAPSHOT/guide/org.specs2.guide.Runners.html#with+sbt+%3E+0.9.x – Eric