2009-10-06 144 views

回答

2

由於編譯好的Scala只是Java字節碼(好的,在類名中有更多的$字符),它就像對Java代碼運行JUnit 4測試一樣,也就是從命令行傳遞測試類作爲參數org.junit.runner.JUnitCore。由於JUnit 4開箱即用,只有命令行支持,所以您甚至不必擔心抑制基於GUI的測試運行器。這就是說,特定的Scala測試框架(ScalaTest,ScalaCheck)確實提供了一種更習慣的集合方法來測試用這種更多功能語言編寫的代碼。

1

您可能會感興趣ScalaTest

ScalaTest是斯卡拉和Java程序員 一個自由的,開放源碼 測試工具。它是用斯卡拉編寫的, ,可以讓你編寫測試,在 斯卡拉測試斯卡拉或Java代碼 。它在Apache 2.0開源許可證下發布。 由於不同的開發人員採用 不同的方法來創建 軟件,所以沒有一種方法可以很好地適用於每個人。在這個現實的光線下,ScalaTest是 ,旨在方便不同的 測試樣式。

有關如何從命令行運行測試的信息,請參閱Runner文檔。

0

對於這個問題,ScalaTest或任何其他Scala特定框架的建議非常好。不過,我想指出其他的東西。

SBT

SBT是一個構建工具,如Ant,Maven或Make。它的一個有趣的方面,這對我們很重要,它是基於Scala的。我不是說它具有處理Scala代碼的特殊功能,或者它是用Scala編寫的,儘管這些都是真實的。我的意思是它使用Scala代碼,而不是像Maven和Ant這樣的XML作爲配置源。

這本身就很有趣。就在今天,我看到了一個將測試資源與程序源分離的美好例子,我只是在這裏發佈它,因爲它很酷。

// on this project we keep all sources, whether they be Scala or Java, and whether they be 
// regular classes or test classes, in a single src tree. 
override def mainScalaSourcePath = "src" 
override def mainJavaSourcePath = "src" 
override def testScalaSourcePath = "src" 
override def testJavaSourcePath = "src" 
override def mainResourcesPath = "resources" 

// distinguish main sources from test sources 
def testSourceFilter = 
    "Test*.scala" | "Test*.java" | 
    "AbstractTest*.scala" | "AbstractTest*.java" | 
    "ScalaTestRunner.scala" 
def mainSourceFilter = ("*.scala" | "*.java") - testSourceFilter 
override def mainSources = descendents(mainSourceRoots, mainSourceFilter) 
override def testSources = descendents(testSourceRoots, testSourceFilter) 

但是,更令人感興趣的是SBT就像一個控制檯一樣工作。你運行「sbt」,然後你就進入了一個類似控制檯的界面,你可以從這個界面中輸入命令,比如「test」,並讓你的測試運行。

相關問題