2017-07-07 54 views
2

因此,我們有一個我們想要使用Scalatest測試的Scala程序(使用Maven構建)。我們正在運行的Scala 2.11.8和Scalatest 3.0.1(我們試圖3.0.3無濟於事)scalatest - 無法擴展先前版本的Scala編譯的宏

當我們的測試運行與宏觀assert(),我們得到以下錯誤什麼:

error: can't expand macros compiled by previous versions of Scala 
     assert(true) 
      ^

它指向true,但問題在於我們放入assert()的任何內容。我們POM具有Scalatest以下依賴:

<dependency> 
    <groupId>org.scalatest</groupId> 
    <artifactId>scalatest_2.11</artifactId> 
    <version>3.0.1</version> 
    <scope>test</scope> 
</dependency> 

我們正在試圖執行的代碼是:

import org.scalatest.{FlatSpec, _} 
import org.junit.runner.RunWith 
import org.scalatest.junit.JUnitRunner 


@RunWith(classOf[JUnitRunner]) 
class Testing extends FlatSpec { 
    //test 
    var number = 0; 
    "An empty Set" should "have size 0" in { 
    assert(true) 

    } 
} 

地塊的鄉親說,這是用Scala的2.11,但包括2.10依賴性的問題,但我們使用的是2.11。任何幫助將非常感激。我還應該注意到我們使用Scala 2.10來試用它,並且它工作正常。

+0

該消息明確表示涉及錯誤的Scala版本編譯的_something_。您可能需要包含完整的POM。請注意,使用明確的'_2.11'而不是使用屬性是一種反模式,這使得在Scala版本之間切換時偶然會留下'_2.10'或'_2.12'。 –

+0

是的,它實際上是使用我填寫的屬性,所以你們知道它是什麼。我將嘗試下面的答案,看看是否有其他依賴項正在使用它。不幸的是,我把工作電腦留在週末工作。沒有提及2.10,但也許有一個2.12在POM – skylerl

回答

2

運行mvn dependency:tree並找出哪些依賴關係具有_2.10。 使用Dependency management確保包含_2.11,排除_2.10 。

+0

這絕對幫助我弄明白了。原來我們的一個依賴包括一個2.10 jar包,其中包括scalatest_2.10。非常感謝! – skylerl

+0

很高興幫助。 – JVS