标签: scalacheck

如何使用Scalacheck的Specs2自动测试String参数?

Scala 重写的specs2测试框架将自动化测试与scalacheck集成在一起.specs2文档中给出的关于如何将scalacheck与specs2一起使用的示例使用整数或更复杂的自定义生成器,如eric的json示例中所示.

虽然试图让一个稍微不那么复杂的例子工作,但我很难挣扎,因为我不知道如果我想生成String参数而不是Integers,会如何使用specs2和scalacheck.这个快速入门示例如何?


import org.scalacheck._

object StringSpecification extends Properties("String") { property("startsWith") = Prop.forAll((a: String, b: String) => (a+b).startsWith(a))

property("endsWith") = Prop.forAll((a: String, b: String) => (a+b).endsWith(b))

// Is this really always true? property("concat") = Prop.forAll((a: String, b: String) => (a+b).length > a.length && (a+b).length > b.length )

property("substring") = Prop.forAll((a: String, b: String) => (a+b).substring(a.length) == b )

property("substring") = Prop.forAll((a: String, b: String, c: String) => (a+b+c).substring(a.length, a.length+b.length) == b ) …

Run Code Online (Sandbox Code Playgroud)

specs scala scalacheck specs2

9
推荐指数
1
解决办法
4999
查看次数

如何让ScalaCheck的Arbitrary始终生成一些特殊的案例值?

除了一些随机值之外,我想让我的所有属性始终至少使用一组固定的特殊值进行测试.我想在我的生成器规范中定义它,而不是在使用该生成器类型的每个测试中定义.例如,如果我生成Ints,我希望我的生成器始终为每个测试用例生成至少0,1和-1.这可能吗?

我想出了迄今为止最好的是做一个大小发电机,其中最小的ñ大小对应于我ñ特殊情况.这是有问题的,至少因为当最大测试次数配置为低于max size参数时,不测试所有可能的大小.

scala scalacheck

9
推荐指数
1
解决办法
2450
查看次数

Scalacheck无法正确报告失败案例

我写了以下规范

"An IP4 address" should "belong to just one class" in {
    val addrs = for {
        a <- Gen.choose(0, 255)
        b <- Gen.choose(0, 255)
        c <- Gen.choose(0, 255)
        d <- Gen.choose(0, 255)
    } yield s"$a.$b.$c.$d"

    forAll (addrs) { ip4s =>
        var c: Int = 0
        if (IP4_ClassA.unapply(ip4s).isDefined) c = c + 1
        if (IP4_ClassB.unapply(ip4s).isDefined) c = c + 1
        if (IP4_ClassC.unapply(ip4s).isDefined) c = c + 1
        if (IP4_ClassD.unapply(ip4s).isDefined) c = c + 1
        if (IP4_ClassE.unapply(ip4s).isDefined) c = c + …
Run Code Online (Sandbox Code Playgroud)

automated-tests unit-testing scala scalatest scalacheck

9
推荐指数
1
解决办法
1235
查看次数

scalacheck:生成非空字符串

在类似这样的上下文中,生成非空字符串的最佳方法是什么

  private def createIndexFn() = {
      for{
        someChar <-  Gen.alphaString
        aNumber <- Gen.choose(1,100)
        //...
       }       
       yield { 
           MyThing(AnotherType(someChar.toString), SomeOtherType(aNumber), aNumber)
   }
 }
Run Code Online (Sandbox Code Playgroud)

你需要的地方也许someChar是一个非空字符串.我知道你可以whenever在这forAll部分使用,但我想知道如何在发电机的这一部分做.

谢谢

scala scalacheck

9
推荐指数
2
解决办法
1920
查看次数

如何使用ScalaCheck测试Java程序?

我在ScalaCheck 用户指南中读到它是测试Scala和Java程序的工具.

我想知道,这只是营销,还是测试仅使用Java的代码库是一个合理的想法?如果是这样,将它与Java项目集成的最佳方法是什么?

java unit-testing scala scalacheck

8
推荐指数
1
解决办法
2105
查看次数

Scalacheck生成具有相同长度的Gen.alphastr

我需要生成长度相同的字符串.我怎么也想不到.非常感谢

val s = for {
  x <- Gen.alphaStr
} yield ...
Run Code Online (Sandbox Code Playgroud)

scalacheck

8
推荐指数
1
解决办法
3071
查看次数

Scalacheck:生成与生成器列表对应的列表

我想生成一个与生成器列表对应的整数列表ScalaCheck.

    import org.scalacheck._
    import Arbitrary.arbitrary

    val smallInt = Gen.choose(0,10)
    val bigInt = Gen.choose(1000, 1000000)
    val zeroOrOneInt = Gen.choose(0, 1)
    val smallEvenInt = smallInt suchThat (_ % 2 == 0)

    val gens = List(smallInt, bigInt, zeroOrOneInt, smallEvenInt)
    //val listGen: Gen[Int] = ??
    //println(listGen.sample) //should print something like List(2, 2000, 0, 6)
Run Code Online (Sandbox Code Playgroud)

对于给定的gens,我想创建一个listGen有效样本的生成器List(2, 2000, 0, 6).这是我第一次尝试使用元组.

    val gensTuple = (smallInt, bigInt, zeroOrOneInt, smallEvenInt)
    val tupleGen = for {
        a <- gensTuple._1
        b <- gensTuple._2 …
Run Code Online (Sandbox Code Playgroud)

scala scalacheck

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

为什么在成功完成scalacheck后,sbt会给"对象scalacheck不是包org的成员"?

我添加了以下内容build.sbt:

libraryDependencies <<= scalaVersion { scala_version => Seq(
 <other entries>
  "org.scalacheck" %% "scalacheck" % "1.10.0" % "test",
  <other entries>
  )
}
Run Code Online (Sandbox Code Playgroud)

compile在SBT项目,依赖被成功解析为可以在日志中可以看出:

[info] Resolving org.scalacheck#scalacheck_2.9.1;1.10.0 ...
...
Done updating
Run Code Online (Sandbox Code Playgroud)

但是,在编译一个文件时出现以下错误.

object scalacheck is not a member of package org
import org.scalacheck.Gen
      ^  
Run Code Online (Sandbox Code Playgroud)

这可能是什么原因?

有没有办法看到sbt在compile任务期间使用的类路径?

Sbt version: 0.11.2
OS: Windows 7
Scala version: 2.9.1
Run Code Online (Sandbox Code Playgroud)

请注意,该项目在ScalaIDE中构建良好.(我使用sbteclipse生成eclipse .classpath文件.生成的.classpath具有正确的scalacheck条目.)

scala sbt scalacheck

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

在Propspec和PropertyCheck中使用scalacheck时,如何让ScalaTest正确报告测试结果?

我想使用scalacheck使用基于属性的测试来测试我的scala程序.我写 :

class MyProperties extends PropSpec with PropertyChecks {
    property("My property") {
        val myProperty: org.scalacheck.Prop = new MyProperty
        // some code I need to set myProperty
        myProperty.check
    }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎是错的,因为当我使用ScalaTest运行这个类时,我进入控制台:

Run starting. Expected test count is: 1
MyProperties:

! Falsified after 51 passed tests.
> ARG_0: myGeneratedArgument
- My property
Run completed in 1 second, 623 milliseconds.
Total number of tests run: 1
Suites: completed 1, aborted 0
Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0
All …
Run Code Online (Sandbox Code Playgroud)

eclipse scala scalatest scalacheck

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

ScalaCheck - 有序数组生成器

我是第一次尝试ScalaCheck,我想生成一个有序的Ints数组.

我阅读了文档并做了一些搜索,但我找不到办法.

有人可以对此有所了解吗?

谢谢

scala scalacheck

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