标签: specs2

在sbt 0.10中为specs2测试配置junitxml输出

如何配置sbt 0.10以将junitxml选项与specs2配合使用?

specs2文档说,这是用SBT 0.7.x来做到这一点:

override def testOptions = super.testOptions ++ Seq(TestArgument("junitxml"))

如何在sbt 0.10中说同样的话?

scala sbt specs2

7
推荐指数
2
解决办法
1502
查看次数

如何从命令行运行Scala + specs2?

我是一个全新的Scala程序员,我以前没有Java经验; 我来自红宝石.我正在尝试运行我的第一个TDD示例程序.我计划一些非常小的东西,可能有5或6个测试.我正在尝试使用specs2 lib.我没有IDE,我通常用vim编程并从命令行执行一些东西.

如何从命令行使用我的.scala文件中的scala和specs2?

快速入门中,他们提到了这一点:

scala -cp ... specs2.run HelloWorldSpec
Run Code Online (Sandbox Code Playgroud)
  1. 我不知道elipsis(...)代表什么.我该怎么办?
  2. 该命令引用(我假设)一个名为的文件specs2.run.但在下载部分我只得到一个.jar文件.在哪里specs2.run
  3. 依赖关系部分,我给出了两种技术 - sbt和maven(我用谷歌搜索过,之前不知道它们).无论如何我都必须使用sbt/maven吗?我不能只使用控制台命令吗?它只有1个文件,有5个测试.
  4. 我知道有一个示例应用程序,但它再次没有关于如何运行它的说明.我认为它准备好与sbt和maven合作.我宁愿不必学会使用其中任何一个来进行快速测试.可能吗?

非常感谢.

console scala specs2

7
推荐指数
1
解决办法
1445
查看次数

如何在没有匹配器的情况下跳过specs2中的测试?

我试图在scala中使用specs2测试一些db相关的东西.目标是测试"db running"然后执行测试.我发现如果数据库关闭,我可以使用Matcher类中的orSkip.

问题是,我正在获得一个匹配条件的输出(作为PASSED)并且示例被标记为SKIPPED.我想要的是:只有在测试数据库脱机时才执行一个标记为"SKIPPED"的测试.这是我的"TestKit"的代码

package net.mycode.testkit

import org.specs2.mutable._
import net.mycode.{DB}


trait MyTestKit {

  this: SpecificationWithJUnit =>

  def debug = false

  // Before example
  step {
    // Do something before
  }

  // Skip the example if DB is offline
  def checkDbIsRunning = DB.isRunning() must be_==(true).orSkip

  // After example
  step {
    // Do something after spec
  }
}
Run Code Online (Sandbox Code Playgroud)

这里是我的规范的代码:

package net.mycode

import org.specs2.mutable._
import net.mycode.testkit.{TestKit}
import org.junit.runner.RunWith
import org.specs2.runner.JUnitRunner

@RunWith(classOf[JUnitRunner])
class MyClassSpec extends SpecificationWithJUnit with TestKit with Logging {

  "MyClass" should {
    "do …
Run Code Online (Sandbox Code Playgroud)

scala skip specs2

7
推荐指数
2
解决办法
6953
查看次数

如何跳过specs2中的"should"块/片段?

假设我在"单元"样式中定义了specs2规范,如下所示:

import org.specs2.mutable

class MyClassSpec extends mutable.Specification {
  "myMethod" should {
    "return positive values" in {
      MyClass.myMethod must beGreaterThan(0)
    }

    "return values less than 100" in {
      MyClass.myMethod must beLessThan(100)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以跳过/禁用/标记待定块/片段中的所有示例myMethod

显然,我可以从块中的每个单独的示例调用pendingUntilFixed或返回pending,但对于具有许多规范的块而言,这将是相当繁琐的.

如果MyClass.myMethod难以实施并受到惩罚,这似乎是常见的事情.还有另一种方法,这通常在specs2中完成吗?

scala specs2

7
推荐指数
1
解决办法
1744
查看次数

specs2的JVM内存设置

SBT使用specs2spray-testkit在我的一些较大的验收风格测试中保持内存不足.我有10个演出或RAM可用,目前我开始SBT(使用SBT附加脚本),MaxPermSize为512m,Xms为1024m,Xmx为2g.

验收测试按特定顺序贯穿客户的整个业务流程,因此将验收测试分成多个较小的测试并不容易.

任何想法如何更好地配置我的环境,或者我应该注意的问题将不胜感激.

为了它的价值,我在Ubuntu下使用Oracle Java,该项目使用Scala 2.10,sbt 0.12.2,使用specs2 1.14喷涂1.1-M7.

在测试之外运行系统时,或者在使用较小的测试时,一切都像发条一样运行.只有在较大的测试中,事情才会变得坚果.

sbt spray specs2

7
推荐指数
2
解决办法
1047
查看次数

Play 2.2 - specs2 - 如何测试2.2中的期货?

我测试期货的方式是使用value1.我迁移到了play2.2.我发现,我习惯的测试方法已经消失了.@ scala.deprecated("使用scala.concurrent.Promise代替.","2.2")

任何帮助将不胜感激.

奥利弗

unit-testing scala future specs2 playframework-2.2

7
推荐指数
1
解决办法
3561
查看次数

如何在Play Framework中使用Scala测试Akka Actor的典型示例

在Play Framework中创建了一个Akka演员,我现在想测试一下.但是我马上遇到了一个问题:

  1. 当前的Play Scala Testing页面不包含测试Actors的任何内容,并且在所有示例中都使用Specs2
  2. 我在Play 2.2.1源代码测试或样本(也使用Specs2)中找不到演员测试示例.
  3. 阿卡演员测试页使用ScalaTest和阿卡系统设置似乎与由Play应用程序本身使用的不同.
  4. Akka actor测试确实讨论了使用Specs2的问题的解决方法,但没有提供这样一个测试的工作示例,当然也没有使用Play的内置测试夹具.

任何人都可以使用TestKit和Play的测试装置提供测试Akka演员的典型示例吗?

为了保持一致性,我更喜欢使用Specs2(坦率地说,为单个应用程序要求两个不同的测试框架似乎很奇怪)但是如果它与Play测试装置很好地集成,我将接受ScalaTest示例.

akka scalatest playframework specs2 playframework-2.0

7
推荐指数
1
解决办法
3387
查看次数

使用specs2进行seq空测试

如何Seq[String]在Scala中使用specs2 检查a 是否为空?我正在使用seq must be emptyseq.length must be greaterThan(0)但最终总是出现类型不匹配错误.

ret is Seq[String]

ret.length must be greaterThan(0)

[error] ApiTest.scala:99: type mismatch;
[error]  found   : Int
[error]  required: org.specs2.matcher.Matcher[String]
[error]         ret.length must be greaterThan(0)
Run Code Online (Sandbox Code Playgroud)

unit-testing specs scala specs2

6
推荐指数
2
解决办法
3059
查看次数

如何模拟在Scala/Specs2中使用Mockito返回AnyVal的函数?

我想在Scala中使用Mockito(确切地说是Specs2)来存储返回AnyVal的函数,但是它不能正常工作:

import org.specs2.mutable._
import org.specs2.mock._

case class V(s: String) extends AnyVal

class A {
  def f: V = new V("Hello")
}

class Sample extends Specification with Mockito {
    "Mockito" should {
        "mock A" in {
            val a = mock[A]
            a.f returns new V("hoge")
            a.f match {
                case V("hoge") => success
                case _ => failure
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这失败了:

V cannot be returned by f()
f() should return String
Run Code Online (Sandbox Code Playgroud)

我使用标记接口/特征找到了一种解决方法(基于我在上面提供的代码片段):https: //gist.github.com/mtgto/9251779

但这对我来说不是任何解决方案,因此它会更改返回类型(因为模拟/测试库问题).

以前任何人都看过这个并且知道如何存根这样的功能?

scala mockito specs2

6
推荐指数
1
解决办法
2143
查看次数

如何设置SBT构建以在Jenkins的测试失败时返回零退出代码?

当我通过SBT在Jenkins中运行我的Specs2测试时,一旦测试失败,构建就会被标记为失败.由于Jenkins通常区分构建失败和测试失败,我想改变这一点.

我知道Jenkins的构建失败是由对SBT的调用的退出代码检测到的,一旦至少一个测试失败,它就会返回1.

有什么选择我假设我想避免改变我build.sbt(或一般的项目)只是为了解决这个不便?

不知何故,我认为应该可以将标准的sbt项目放入标准的Jenkins安装中并使其按预期工作.

sbt scalatest jenkins specs2

6
推荐指数
1
解决办法
1512
查看次数