How do I run both ScalaTest and JUnit tests with Gradle?
gradle, junit, scalatest
Solution
Another alternative to running with JUnit (and to creating an Ant task as suggested in comments) - is creating a task that runs ScalaTest's Runner directly:
task scalaTest(dependsOn: ['testClasses'], type: JavaExec) {
main = 'org.scalatest.tools.Runner'
args = ['-R', 'build/classes/test', '-o']
classpath = sourceSets.test.runtimeClasspath
}
test.dependsOn scalaTest // so that running "test" would run this first, then the JUnit tests
Problem
I've got a mixed Java / Scala project with both JUnit and ScalaTest tests. With the scalatest plugin, Gradle runs the ScalaTest tests in `src/test/scala`, but ignores the JUnit tests in `src/test/java`. Without the plugin, Gradle runs the JUnit tests but ignores the Scala. What trick am I missing? My `build.gradle`: ``` plugins { id 'java' id 'maven' id 'scala' id "com.github.maiflai.scalatest" version "0.6-5-g9065d91" } sourceCompatibility = 1.8 group = 'org.chrononaut' version = '1.0-SNAPSHOT' task wrapper(type: Wrapper) { gradleVersion = '2.3' } ext { scalaMajorVersion = '2.11' scalaVersion = "${scalaMajorVersion}.5" } repositories { mavenCentral() mavenLocal() } dependencies { compile "org.scala-lang:scala-library:${scalaVersion}" compile "org.scala-lang.modules:scala-xml_${scalaMajorVersion}:1.0.3" compile 'com.google.guava:guava:18.0' compile 'javax.xml.bind:jaxb-api:2.2.12' compile 'jaxen:jaxen:1.1.6' compile 'joda-time:joda-time:2.7' compile 'org.joda:joda-convert:1.7' compile 'org.apache.commons:commons-lang3:3.3.2' compile 'org.jdom:jdom2:2.0.5' testCompile 'junit:junit:4.12' testCompile 'org.easytesting:fest-assert:1.4' testCompile 'org.mockito:mockito-core:1.10.19' testCompile "org.scalatest:scalatest_${scalaMajorVersion}:2.2.4" testRuntime 'org.pegdown:pegdown:1.1.0' // required by scalatest plugin } compileScala { scalaCompileOptions.additionalParameters = [ "-feature", "-language:reflectiveCalls", // used for config structural typing "-language:postfixOps" ] } ``` ETA: I know it's possible to annotate Scala tests to force them to run with the JUnit test runner. I'm looking for a one-stop `build.gradle` solution that doesn't require editing every test file (or messing with the tests to get around limitations in the build system, in general).