Kann nicht ausgeführt werden Scalatest mit Gradle
task scalaTest(dependsOn: testClasses) << {
description = 'Runs Scalatest suite'
ant.taskdef(name: 'scalatest',
classname: 'org.scalatest.tools.ScalaTestAntTask',
classpath: sourceSets.test.runtimeClasspath.asPath
)
ant.scalatest(runpath: sourceSets.test.output.classesDir,
haltonfailure: 'true', fork: 'false') {
reporter(type: 'stdout')
}
}
Ich laufen gradle scalaTest
und ich bekomme:
* What went wrong:
Execution failed for task ':scalaTest'.
> java.lang.NoClassDefFoundError: scala/reflect/ClassManifest$
Ich bin mit Scala-2.10.2 und Gradle 1.7
dependencies {
compile 'org.scala-lang:scala-library:2.10.2'
testCompile 'org.scalatest:scalatest:1.3'
testCompile 'org.scalamock:scalamock_2.10:3.0.1'
}
Was ist falsch??
- Sieht aus wie Sie sind, fehlt
scala-reflect
. Trotzdem, es ist wohl besser, führen Sie die tests über Gradle die JUnit-Unterstützung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, wie dieses Problem zu lösen, aber ich kann Ihnen einen workaround. Anmerkungen in Ihren test-Klassen mit
@RunWith(classOf[JUnitRunner])
wie diese:und dann
gradle test
funktionieren sollte.Edit:
Meine Abhängigkeiten:
Können Sie die folgenden in Ihrem
build.gradle
:Dann einfach laufen
gradle spec
Ausführung von tests.Ich den Namen der Aufgabe
spec
weil es bereits einetest
Aufgabe. Keine Ahnung, ob Sie überschreiben die Standard-test-Aufgabe.Sie können sich die verfügbaren Optionen hier.
test.dependsOn spec
zum ausführen der tests mit scalagradle test
'build/classes/test'
zu'build/classes/scala/test'
.Als von Gradle 3.2.1, folgende root
build.gradle
läuft sowohl JUnit und ScalaTest-code. Dieser code ist für multi-Projekt-build, aktiviert übersettings.gradle
, das ist, warumsubprojects
verwendet.Plus, es ist auf Zweck verwendet explizite Gradle-API zur Minimierung der Gradle-DSL-Magie.
rarry korrekt ist. Und noch besser, Sie können kommentieren Basis-test-Klasse mit
@RunWith(classOf[JUnitRunner])
einmal bewirken, dass alle Ihre ScalaTest tests mit JUnit runner (vorausgesetzt, Sie erweitern die Basis-Klasse), z.B.:Diese Antwort vielleicht ein wenig spät. Aber für einen Einsatz von scala mit gradle (5.x), die folgenden Werke.
Fügen Sie den folgenden plugin für gradle.
Um den code auszuführen
Als bonus die Testergebnisse aus der obigen
plugin
würde auch gemeldet werden, besser als der Standard-Bericht.