scala使用FunSpec進行單元測試報錯

遇到比較奇怪的問題,mvn項目中的main函數能夠正常運行,可是test階段出錯,報錯信息以下:java

Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at learning_scala.java.Main.main(Main.java:12)
Caused by: java.lang.ClassNotFoundException: scala.ScalaObject
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)

test代碼以下:函數

class Sampling$Test extends FunSpec{
  describe("Sampling Test"){
    val spark = SparkSession
      .builder()
      .master("local")
      .getOrCreate()
    println("......")
    it("should run without exeption."){
      val array: Array[String] = Array("down", "xxx", "xxx", "xxx", "xxx")
      Sampling.main(array)
    }
  }
}

解決方法:單元測試

將 scala-library.jar 的路徑加入到 CLASSPATH 中(參考:https://stackoverflow.com/questions/7781547/noclassdeffounderror-scala-scalaobject-in-mixed-scala-java-project),可是又報了以下錯誤:測試

Error:scalac: error while loading Suite, Scala signature Suite has wrong version
 expected: 5.0
 found: 4.1 in Suite.class

 是scala和單元測試包不匹配形成的,將org.specs包更新到最新,問題解決:ui

<dependency>
      <groupId>org.specs</groupId>
      <artifactId>specs</artifactId>
      <version>1.4.3</version>
      <scope>test</scope>
</dependency>
相關文章
相關標籤/搜索