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

Mat*_*ttK 16 maven-2 unit-testing scala

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

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

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

Bil*_*ers 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.


Bry*_*ift 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 {
    (...)
}
Run Code Online (Sandbox Code Playgroud)

在你的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>
Run Code Online (Sandbox Code Playgroud)

  • 只是评论,使用Maven 3.0插件描述应该在`<build>`部分而不是`<reporting>`. (6认同)
  • `<include>**/*Spec.class </ include>`对我来说是一个很好的帮手.谢谢! (2认同)

Eri*_*ric 10

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

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

谢谢,

埃里克.

PS:如果要访问其中一些库功能,还可以使用规范中的ScalaTest和ScalaCheck.