28
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')
    }
}

実行するgradle scalaTestと、次のようになります。

* What went wrong:
Execution failed for task ':scalaTest'.
> java.lang.NoClassDefFoundError: scala/reflect/ClassManifest$

Scala 2.10.2 と 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'
}

どうしたの??

4

5 に答える 5

33

この問題を解決する方法はわかりませんが、回避策を提供できます。@RunWith(classOf[JUnitRunner])次のように、テスト クラスに で注釈を付けます。

import org.scalatest.junit.JUnitRunner
import org.junit.runner.RunWith

@RunWith(classOf[JUnitRunner])
class MyTest extends FunSpec{
}

そして、gradle test動作するはずです。

編集:

私の依存関係:

compile "org.scala-lang:scala-library:2.10.1"
testCompile "org.scalatest:scalatest_2.10:1.9.1"
于 2013-09-16T09:10:50.617 に答える
3

ラリーは正しいです。さらに良いことに、基本テスト クラス@RunWith(classOf[JUnitRunner]) 一度アノテーションを付けて、すべての ScalaTest テストを JUnit ランナーで実行することができます (基本クラスを拡張すると仮定します)。

import org.junit.runner.RunWith
import org.scalatest._
import org.scalatest.junit.JUnitRunner

@RunWith(classOf[JUnitRunner])
abstract class UnitSpec extends FlatSpec with Matchers
于 2016-03-08T14:55:39.233 に答える