我的公司开始使用Scala编写一些代码。我已经转移到这个项目,并且是TDD的忠实粉丝,所以我想建立一个单元测试框架。但是,我们为这个项目使用的构建系统是Maven,由于各种原因,它不会改变。
我看过ScalaTest和ScalaCheck,两者似乎都与Maven集成有关。我在谷歌搜索中看到的各种论坛帖子表明,ScalaTest附带的一些套件不会在maven-scala-plugin下运行,而且在Maven测试中运行ScalaCheck时我根本找不到任何信息。目标
任何人都可以指出我可以使用Maven可靠地运行ScalaTest / ScalaCheck,还是建议替代方案?
答案 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设置时,这些问题在结果中得到了很高的评价,但没有提供令人满意的(对于我的情况)答案。
基本上:
@RunWith(classOf[JUnitRunner])
作为类注释**/*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。