2010-12-22 33 views
20

我試圖在Intellij IDEA(最新的社區構建,最新的Scala插件)​​中運行scala flatspec測試,但我一直在收到「空測試套件」錯誤。如何在IntelliJ思想中運行Scala ScalaTest?

我嘗試使用正常的「運行」菜單右鍵單擊,但它不起作用。我也嘗試創建一個新的ScalaTest配置,但跑步者還沒有拿起測試。

我能夠在單元中使用JScalaTest,但我更喜歡使用flatspec語法。

UPDATE:與@RunWith(classOf[JUnitRunner])註釋的類並沒有幫助

謝謝!

class SampleTestSpec extends FlatSpec with ShouldMatchers { 
    "test" should "fail" in { 
     "this" should equal ("that") 
    } 
} 

更新:從ScalaTest切換到Spec,解決了這個問題。我仍然喜歡使用FlatSpec的ScalaTest,但這已經足夠了。該工作代碼:

import org.specs._ 
object SampleTestSpec extends Specification { 
    "'hello world' has 11 characters" in { 
    "hello world".size must be equalTo(113) 
    } 
    "'hello world' matches 'h.* w.*'" in { 
    "hello world" must be matching("h.* w.*") 
    } 
} 

-TeO

+0

如果你所提到的實際版本本來不錯數字。 '最新'是一個移動的目標。 – akauppi 2014-11-10 12:29:48

+3

重要提示:根據具體情況,IntelliJ不會選取用ScalaTest編寫的測試用例,例如FunSpec。確保你配置了「運行配置」 - >「ScalaTest」,這樣組合「測試種類」就會顯示「全包」。我的意思是:以這種方式配置默認值,否則IntelliJ可能會或可能不會按照您期望的方式創建新配置。 – 2015-08-23 15:10:07

+1

重要#2:如果您使用的是SBT,請使用sbt-idea插件爲IntelliJ生成配置文件,這些文件在定義「運行配置」時需要。 – 2015-08-23 15:38:50

回答

4

我一直在運行它像這樣(不過我也覺得有點冗長,大概可以減少):

@RunWith(classOf[JUnitSuiteRunner]) 
class AuthorisationParserRunAsTest extends JUnit4(AuthorisationParserSpec) 
object AuthorisationParserSpec extends Specification { 
    ... 
} 
0

只是有點晚,但我見過的同問題(「空測試套件」)閒逛IDEA bu​​g跟蹤系統後,我發現我的情況的解決方案:
scala版本是2.9.0-1scala-test具有版本2.8.*
scala-test升級至最新版本(與scala相同)後開始工作。

2

ScalaTest在所有可能性上都有an Overview;我只是標註的所有測試類,

@RunWith(classOf[JUnitRunner]) 
13

如果的IntelliJ不自動拾取測試,你可以做到以下幾點:

在運行配置,創建ScalaTest運行配置,並設立了「測試種類「改爲」全部包裝「及其」測試包「到包含您的測試的包裝中。

0

我已經能夠在IntelliJ中運行FunSuite測試,沒有任何問題。但是,使用FlatSpec測試時發現的是,如果使用Ctrl + Shift + F10(即運行所有測試)來正確執行,則需要右鍵單擊或使光標位於實際測試類定義上所有定義的測試,並避免令人沮喪的「空測試套件」錯誤。

6

這爲我工作: 編輯配置 - >測試類型:在包

0

在所有情況下,它可以幫助任何人 - 我打這個新鮮Scala和它因爲這樣,我想我的結構測試類。我有

class SomeTests extends FlatSpec { 
    def aTest = { 
    "This thing when that thing happens" should 
    "return some particular response" in { 
     // ... test body 
    } 
    } 
} 

的問題是,我包裹着我的測試中的方法,卻沒有意識到,在這方面的測試需要裸露:

class SomeTests extends FlatSpec { 

    "This thing when that thing happens" should 
    "return some particular response" in { 
     // ... test body 
    } 

} 
相關問題