2012-09-21 49 views
5

我正在參加Martin Odersky Coursera類和作業使用ScalaTest。令人惱火的是,Eclipse無法在雙擊時找到測試方法,或者右鍵單擊JUnit運行器中的「轉到文件」。Eclipse JUnit轉輪無法在雙擊上找到ScalaTest方法

雙擊後,「方法'xxx'not found。打開測試類。」彈出對話框。

是否存在配置問題,或者這是一個ScalaTest錯誤/限制?

下面是從類樣本ScalaTest:

package recfun 

import org.scalatest.FunSuite 

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

@RunWith(classOf[JUnitRunner]) 
class CountChangeSuite extends FunSuite { 
    import Main.countChange 
    test("manual") { 
    assert(countChange(4,List(1,2)) === 3) 
    } 
} 

回答

2

您可以在ScalaTest 1.8中使用ScalaTest Eclipse插件。但是當你運行你的測試時,它會彈出一個GUI。有用,但不如ScalaTest 2.0集成好。我認爲你使用1.8的Coursera課程。

您在使用JUnit時遇到的實際問題是我們試圖在ScalaTest中解決的問題。 JUnit不僅是一個測試框架,它還是一個測試平臺,您可以通過@RunWith註釋運行其他框架。在這種情況下,您正在通過JUnit運行ScalaTest。但是,您沒有通過@RunWith註釋獲得完整的IDE支持,您只需運行它即可。這確實是JUnit的限制。您希望獲得IDE支持的是您通過JUnit運行的測試框架(在本例中爲ScalaTest)。使用JUnit的唯一方法是爲您的測試框架編寫IDE插件,這是很多工作。

作爲ScalaTest項目的一部分,我們一直致力於開發插件或幫助製作插件,爲ScalaTest用戶提供完整的IDE支持。但作爲這一努力的一部分,我們還提出了一個「Finder」的概念,當它們通過ScalaTest運行時,可用於爲其他測試框架提供完整的IDE支持。 (也就是說,就像您可以通過JUnit運行其他測試框架一樣,您也可以通過ScalaTest運行其他測試框架)。您可以在視頻結尾處看到一些Finders爲IDE提供支持的示例(大約10分鐘):

http://skillsmatter.com/podcast/scala/scalatest-scalamock-subcut

+0

感謝您提供清晰的解釋和推進Scala工具的工作!現在,如果只有人可以得到[Android/Eclipse/Scala的順利播放](http://stackoverflow.com/q/8113250/403455)... –

3

是的,它在JUnit的Eclipse插件一個已知的bug。這也很難解決(對於Jun插件)。

基本上,Eclipse junit插件期望有一個方法,它將適用於所有Java JUnit測試,但這不一定適用於ScalaTest測試,尤其是套件&規格。

但是,你可以試用Scalatest plugin for Eclipse,這應該工作。

+0

我喜歡你試圖將責任推卸給JUnit的插件:)。與ScalaTest限制相比,它如何成爲Junit亞軍的bug? –

+0

因爲你點擊的是JUnit插件,而不是Scalatest。 –

+0

JUnit跑步者可能會如何支持Scala黑客攻擊?另一方面,爲什麼ScalaTest會關心支持Eclipse的JUnit runner?我認爲ScalaTest的排序方式與Junit跑步者兼容?順便說一下,我剛剛安裝了ScalaTest Eclipse插件+1,並接受:) –

0

這個工作對我來說:

1在您的文件夾中的項目打開控制檯,並執行 「SBT」。

2-(沒有脫離「sbt」)執行「eclipse」命令。

enter image description here