在 Typesafe activator play 应用程序中使用 Specs2

Using Specs2 in a Typesafe activator play application

我在 vanilla SBT 项目中多次成功使用 specs2。现在我开始学习typesafe activator platform

我做了以下步骤

activator new Shop just-play-scala

这是我的 build.sbt 文件

name := """Shop"""
version := "1.0-SNAPSHOT"
// Read here for optional jars and dependencies
libraryDependencies ++= Seq("org.specs2" %% "specs2-core" % "3.6.1" % "test")
resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases"
scalacOptions in Test ++= Seq("-Yrangepos")
lazy val root = project.in(file(".")).enablePlugins(PlayScala)

我创建了一个文件Shop/app/test/models/ShopSpec.scala

import org.specs2.mutable.Specification
class ShopSpec extends Specification {
  def foo = s2"""
    | This is a specification to check the 'Hello world' string
    | The 'Hello world' string should
    | contain 11 characters                             $e1
    | start with 'Hello'                                $e2
    | end with 'world'                                  $e3
    | """.stripMargin
    def e1 = "Hello world" must haveSize(11)
    def e2 = "Hello world" must startWith("Hello")
    def e3 = "Hello world" must endWith("world")
}

当我 运行 activator test 我得到一个错误

[success] Total time: 0 s, completed Jun 24, 2015 12:21:32 AM
Mohitas-MBP:Shop abhi$ activator test
[info] Loading project definition from /Users/abhi/ScalaProjects/Shop/project
[info] Set current project to Shop (in build file:/Users/abhi/ScalaProjects/Shop/)

**cannot create a JUnit XML printer. Please check that specs2-junit.jar is on the classpath**

org.specs2.reporter.JUnitXmlPrinter$
java.net.URLClassLoader.findClass(URLClassLoader.java:381)
java.lang.ClassLoader.loadClass(ClassLoader.java:424)
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.jav

我之前在使用SBT项目的时候,写过spec2测试用例成功。但只有当我使用 typesafe activator 时,我才会遇到测试用例的问题。

我什至将我的测试代码更改为像

这样简单的代码
import org.specs2.mutable.Specification

class ShopSpec extends Specification {
    "A shop " should {
        "create item" in {
            failure
        }
    }
}

还是一样的问题

等等..我想我解决了。

activator play 平台已经包含了 specs2,所以我不需要为 specs2 调整 built.sbt 文件。

所以我删除了添加到 build.sbt 文件中的所有内容,并将文件保留为

name := """Shop"""

version := "1.0-SNAPSHOT"

lazy val root = project.in(file(".")).enablePlugins(PlayScala)

现在可以正常使用了。所以基本上,我不需要在 specs2 的激活器项目中添加任何东西。

我本可以删除问题...但将其保留在这里以便对某人有所帮助。

对我有用的是将以下内容添加到 build.sbt

libraryDependencies ++= Seq("org.specs2" %% "specs2-core" % "3.6.2" % "test",
                            "org.specs2" %% "specs2-junit" % "3.6.2" % "test")