2009-07-07 26 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

相关问题