2015-01-04 38 views
2

我對Scala和Intellij相當陌生,ScalaTest也是全新的。我用最新的Scala插件設置了Intellij 14和Scala 2.11.4,一切正常。然後我試着介紹ScalaTest,我感到非常困惑。我從scalatest.org下載了最新版本的ScalaTest(scalatest_2.11-2.2.1.jar)。我進入我的項目結構並選擇「模塊」,點擊綠色加號並添加scalatest_2.11-2.2.1.jar。一切進展順利,我可以在我的項目中看到External Libraries的最佳罐子。當我創建我的第一個測試時,它導入了org.scalatest.Funsuite,班級擴展了FunSuite,一切都很好。然後我嘗試了一個非常簡單的測試,我從互聯網上覆制過來。在Intellij中聲明和測試ScalaTest錯誤

import org.scalatest.FunSuite 

class MyTest extends FunSuite { 
    test("this is a test") { 
     assert(true) 
    } 
} 

我得到2個錯誤。它不能解析帶有該簽名的「斷言」引用,也不能解決它所說的「測試」方法unspecified value parameters Seq[Tag]:() => BoxedUnit

我可以看到其他方法簽名「斷言」和「測試」,但我不能使用最基本的。

感謝所有幫助

回答

2

雖然我沒有得到完全相同的錯誤信息,我有類似的問題,總體直到我意識到,你需要兩個JAR來成功地使用ScalaTest:scala-reflect-2.11.4.jarscala-xml-2.11-1.0.2.jar

如果你堅持這樣做,你還應該確保你的測試在一個被標記爲「測試」目錄的目錄中 - 所以以綠色突出顯示:你可以在相同的「模塊「選項卡,但是在」源「子選項卡中而不是」依賴項「中。您還需要檢查「依賴項」子選項卡的「範圍」列中添加的罐子是否標記爲「測試」而不是「編譯」。

如果,另一方面,你創建的IntelliJ的SBT項目而不是一個常規的Scala的項目,你可以只添加以下到您的build.sbt:

libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.1" % "test" 

重新導入的版本。當出現提示時,您可以開始編寫和運行測試:所有依賴項和測試目錄都正確設置,並且它們都「正常工作」。我只是用這種方式創建了一個空的項目並運行你的例子。從頭到尾花了大約一分鐘的時間。

很顯然,你需要在手工管理JAR和學習另一種工具之間進行權衡,但在這一點上學習SBT的基礎知識可能是值得的。

+0

我的scala-reflect.jar和scala-xml_2.11-1.o.2包含在我的scala-sdk-2.11.4 中,我已經按照你的描述設置了tests目錄。 我試圖將範圍從「編譯」更改爲「測試」,但不幸的是沒有改變任何東西。 我仍然有同樣的錯誤。 – yorkville

+0

我按照原來的方式放回東西,儘管我仍然有2個錯誤,但我繼續前進,並進行測試,結果正常。如果我斷言(真)測試通過,並且如果我斷言(錯誤)測試失敗。那麼爲什麼IntelliJ會在編輯器中報告錯誤,即使它運行正常? – yorkville

+3

有時在這種情況下,它有助於使用File /「Invalidate Caches/Restart」並單擊「Invalidate and Restart」。我在思想14中與斯卡拉有過這樣的問題。它還可以幫助檢查文件/設置中的其他Scala設置:在「語言和框架」/「Scala」和/「Scala編譯服務器」下,以及「構建,執行,部署」/「編譯器」/「Scala編譯器」。基本上只是尋找戲劇性的不一致。 –