是否有与Maven集成良好的Scala单元测试工具?

时间:2009-07-07 16:57:44

标签: unit-testing maven-2 scala

我的公司开始使用Scala编写一些代码。我已经转移到这个项目,并且是TDD的忠实粉丝,所以我想建立一个单元测试框架。但是,我们为这个项目使用的构建系统是Maven,由于各种原因,它不会改变。

我看过ScalaTest和ScalaCheck,两者似乎都与Maven集成有关。我在谷歌搜索中看到的各种论坛帖子表明,ScalaTest附带的一些套件不会在maven-scala-plugin下运行,而且在Maven测试中运行ScalaCheck时我根本找不到任何信息。目标

任何人都可以指出我可以使用Maven可靠地运行ScalaTest / ScalaCheck,还是建议替代方案?

5 个答案:

答案 0 :(得分:14)

ScalaTest 1.0有:

org.scalatest.junit.JUnitRunner

您可以将它与JUnit的RunWith注释一起使用。 Maven喜欢这样。现在还有一个用于ScalaTest的Maven插件,由Jon-Anders Teigen编写。现在你需要从Jon-Anders github页面中获取它:

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

很快我们计划在Maven资源库中“正式”部署它。

插件正式部署到Maven Central

答案 1 :(得分:14)

我意识到这已经得到了回答,但我发现使用Scalatest和Maven,特别是通过命令行mvn test找到的最完整答案是http://jpz-log.info/archives/2009/09/29/scalatest-in-maven/

我在这里添加这些信息,因为在搜索Scalatest和Maven设置时,这些问题在结果中得到了很高的评价,但没有提供令人满意的(对于我的情况)答案。

基本上:

  • 像往常一样将scala添加到您的pom以及scalatest(版本> 1.0)和junit
  • 在您的规范中添加@RunWith(classOf[JUnitRunner])作为类注释
  • 告诉maven-surefire-plugin包含**/*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>

答案 2 :(得分:10)

您还可以使用specs声明规范并将其作为JUnit测试与Maven一起执行。这很好,如下所述:http://code.google.com/p/specs/wiki/RunningSpecs#Run_your_specification_with_JUnit4

如果您有任何问题,请在用户邮件列表上发送邮件。

谢谢,

埃里克。

PS:如果您想访问其中一些库功能,也可以使用规范中的ScalaTest和ScalaCheck。

答案 3 :(得分:3)

回答我自己的问题:似乎JUnit4Runner包located here提供了将ScalaTest的全部功能与Maven集成的必要粘合剂。此外,有传言称下一版本的ScalaTest将包含类似的内容。

答案 4 :(得分:1)

Scala有一些有用的单元测试服: 的 ScalaCheck ScalaCheck是Haskell的QuickCheck库的Scala实现。它试图尽可能地保持QuickCheck的外观和感觉,同时开放进行改进和扩展,可以简化基于属性的随机测试Scala程序的任务。 球队:Rickard Nilsson。要求:Scala 2.6.0或更高版本。文档:用户指南。

<强>排练 Rehersal是Scala的测试框架,旨在作为标准库中SUnit的易于使用的替代品。 球队:Raphael Cohn。

<强> ScalaTest ScalaTest是一个免费的开源测试工具,适用于Scala和Java程序员。它是用Scala编写的,使您能够在Scala中编写测试来测试Scala或Java代码。它是在Apache 2.0开源许可下发布的。 团队:Bill Venners。

Scala规范 Specs是一个行为驱动设计框架,它提供:一种简单的类型语言来创建规范;匹配器指定代码属性;与JUnit,Scalacheck和jMock2集成;类似模式的匹配器;结构和组成规范的可能性,以及跨规范重用示例的可能性;数据表一次分组几个数据示例。 球队:Eric Torreborre,David Bernard,Jorge Ortiz。

来自:http://www.scala-lang.org/node/1209#program_testing