2009-07-07 25 views
16

我的公司開始用Scala寫一些代碼。我已經進入這個項目,並且是TDD的忠實粉絲,所以我希望得到一個單元測試框架。但是,我們用於此項目的構建系統是Maven,出於各種原因,這不會改變。是否有一個與Maven完美集成的Scala單元測試工具?

我已經看了ScalaTest和ScalaCheck,並且都看起來與Maven集成有關。我在Google搜索中看到的各種論壇帖子表明,包含在ScalaTest中的一些套件不會在maven-scala插件下運行,並且在Maven測試中運行ScalaCheck時我一直無法找到任何信息目標。

任何人都可以指向我的方式讓ScalaTest/ScalaCheck與Maven可靠地運行,或者建議替代方案嗎?

回答

10

您也可以使用specs聲明規範並將它們作爲JUnit測試與Maven一起執行。這工作正常,如下所述:http://code.google.com/p/specs/wiki/RunningSpecs#Run_your_specification_with_JUnit4

如果您有任何問題,請在用戶郵件列表上發送郵件。

謝謝,

埃裏克。 PS:如果你想訪問這些庫的某些功能,你也可以使用ScalaTest和ScalaCheck規範。

+0

我喜歡的規格,並發現它很容易從Eclipse作爲JUnit測試運行。 – 2009-10-14 06:47:48

3

回答我自己的問題:看起來,JUnit4Runner包located here提供了將ScalaTest的全部功能與Maven集成在一起的必要粘合劑。另外,有傳言說下一個版本的ScalaTest會包含這樣的內容。

14

ScalaTest 1.0有:

org.scalatest.junit.JUnitRunner

您可以使用JUnit的RunWith標註使用它。 Maven喜歡那樣。現在還有一個由Jon-Anders Teigen編寫的用於ScalaTest的Maven插件。現在,你需要從喬恩 - 安德斯GitHub的頁面抓取它:

http://github.com/teigen/maven-scalatest-plugin

很快,我們計劃在Maven倉庫部署「正式」。

插件正式​​部署到Maven Central

14

我知道這已經回答了,但最完整的答案,我發現使用Scalatest與Maven,特別是通過命令行mvn test,是http://jpz-log.info/archives/2009/09/29/scalatest-in-maven/

我這裏補充這些信息,因爲Scalatest和Maven設置這個谷歌搜索時問題的結果相當高,但沒有提供令人滿意的(針對我的情況)答案。

基本上是:

  • 附加斯卡拉您的POM照常以及scalatest(版本> 1。0)和JUnit
  • 您規格添加@RunWith(classOf[JUnitRunner])作爲一類註釋
  • 告訴Maven的萬無一失,插件包括**/*Spec.class

在你Spec.scala文件:

import org.scalatest.junit.JUnitRunner 
import org.junit.runner.RunWith 
import org.scalatest.Spec 
import org.scalatest.matchers.ShouldMatchers 

@RunWith(classOf[JUnitRunner]) 
class AutomatonSpec extends Spec with ShouldMatchers { 
    (...) 
} 

在你pom.xml:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
     <includes> 
      <include>**/*Spec.class</include> 
     </includes> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 
+6

只是一個評論,使用Maven 3.0插件描述應該在'`部分而不是``。 – gpampara 2010-11-18 13:47:21

1

有一些有用的單元測試套件f或Scala: ScalaCheck ScalaCheck是Haskell的QuickCheck庫的一個Scala實現。它儘可能地保持QuickCheck的外觀和風格,同時開放改進和擴展,可以減輕Scala程序的基於財產的隨機測試任務。 團隊:Rickard Nilsson。需要:Scala 2.6.0或更新版本。文檔:用戶指南。

Rehersal Rehersal是Scala的測試框架,旨在作爲標準庫中SUnit的易用替代品。 團隊:Raphael Cohn。

ScalaTest ScalaTest是一款面向Scala和Java程序員的免費開源測試工具。它是用Scala編寫的,使您能夠在Scala中編寫測試來測試Scala或Java代碼。它是在Apache 2.0開源許可下發布的。 團隊:Bill Venners。

斯卡拉規格 規格是一個行爲驅動設計框架,提供:一個簡單的和有類型的語言來創建規格;匹配者指定代碼屬性;與JUnit,Scalacheck和jMock2集成;一個模式的匹配器;構建和組合規範的可能性,以及跨規範重用示例;數據表一次將多個數據示例分組。 團隊:Eric Torreborre,David Bernard,Jorge Ortiz。

來源:http://www.scala-lang.org/node/1209#program_testing

相關問題