Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';这个ScalaTest/ScalaCheck示例缺少什么?_Scala_Scalatest_Scalacheck - Fatal编程技术网

什么';这个ScalaTest/ScalaCheck示例缺少什么?

什么';这个ScalaTest/ScalaCheck示例缺少什么?,scala,scalatest,scalacheck,Scala,Scalatest,Scalacheck,我正在试用ScalaCheck,但还没有弄清楚如何在ScalaTest用户手册上构建第一个示例。我非常确定,以下内容需要在导入之前进行,并包装在从某个库类扩展而来的类中。声明“mix in”PropertyChecks,但没有给出将其混入的适当类的示例: forAll { (n: Int, d: Int) => whenever (d != 0 && d != Integer.MIN_VALUE && n != Integer.MIN_VA

我正在试用ScalaCheck,但还没有弄清楚如何在ScalaTest用户手册上构建第一个示例。我非常确定,以下内容需要在导入之前进行,并包装在从某个库类扩展而来的类中。声明“mix in”
PropertyChecks
,但没有给出将其混入的适当类的示例:

forAll { (n: Int, d: Int) =>

  whenever (d != 0 && d != Integer.MIN_VALUE
      && n != Integer.MIN_VALUE) {

    val f = new Fraction(n, d)

    if (n < 0 && d < 0 || n > 0 && d > 0)
      f.numer should be > 0
    else if (n != 0)
      f.numer should be < 0
    else
      f.numer should be === 0

    f.denom should be > 0
  }
}

测试、导入和所有测试的完整源文件是什么?

如果您在此处查看scala测试的github存储库,您可以在此处找到一些额外的代码

对于您的源,这是导入和结构

import org.scalatest.{Matchers, FlatSpec}
import org.scalatest.prop.PropertyChecks

class Fraction(n: Int, d: Int) {

  require(d != 0)
  require(d != Integer.MIN_VALUE)
  require(n != Integer.MIN_VALUE)

  val numer = if (d < 0) -1 * n else n
  val denom = d.abs

  override def toString = numer + " / " + denom
}

class PropertySpec extends FlatSpec with PropertyChecks with Matchers {
  forAll { (n: Int, d: Int) =>

    whenever(d != 0 && d != Integer.MIN_VALUE
      && n != Integer.MIN_VALUE) {

      val f = new Fraction(n, d)

      if (n < 0 && d < 0 || n > 0 && d > 0)
        f.numer should be > 0
      else if (n != 0)
        f.numer should be < 0
      else
        f.numer should be === 0

      f.denom should be > 0
    }
  }

  val invalidCombos =
    Table(
      ("n", "d"),
      (Integer.MIN_VALUE, Integer.MIN_VALUE),
      (1, Integer.MIN_VALUE),
      (Integer.MIN_VALUE, 1),
      (Integer.MIN_VALUE, 0),
      (1, 0)
    )

  forAll(invalidCombos) { (n: Int, d: Int) =>
    evaluating {
      new Fraction(n, d)
    } should produce[IllegalArgumentException]
  }
}
import org.scalatest.{Matchers,FlatSpec}
导入org.scalatest.prop.PropertyChecks
类分数(n:Int,d:Int){
需要(d!=0)
require(d!=整数.MIN_值)
require(n!=整数.MIN_值)
数值=如果(d<0)-1*n否则n
val denom=d.abs
覆盖def toString=numer+“/”+denom
}
类PropertySpec使用带有匹配器的PropertyChecks扩展FlatSpec{
对于所有{(n:Int,d:Int)=>
无论何时(d!=0&&d!=Integer.MIN_值
&&n!=整数。最小值){
val f=新分数(n,d)
如果(n<0&&d<0 | n>0&&d>0)
f、 数值应大于0
else如果(n!=0)
f、 数值应小于0
其他的
f、 数值应为===0
f、 denom应大于0
}
}
val invalidCombos=
桌子(
(“n”、“d”),
(Integer.MIN_值,Integer.MIN_值),
(1,整数。最小值),
(整数最小值,1),
(整数最小值,0),
(1, 0)
)
forAll(invalidCombos){(n:Int,d:Int)=>
评估{
新分数(n,d)
}应产生[IllegalArgumentException]
}
}

scalatest的最新版本未实施
评估
,并将
=
标记为过时。 所以,我将示例改写为:

import org.scalatest._
import org.scalatest.prop.PropertyChecks

protected class Fraction(n: Int, d: Int) {
  require(d != 0 && d != Integer.MIN_VALUE && n != Integer.MIN_VALUE)
  val numer = if (d < 0) -1 * n else n
  val denom = d.abs
  override def toString = numer + " / " + denom
}

class SscceProps extends FlatSpec with PropertyChecks with Matchers {
  it should "valid combos" in { forAll { (n: Int, d: Int) =>
      whenever(d != 0 && d != Integer.MIN_VALUE && n != Integer.MIN_VALUE) {
        val f = new Fraction(n, d)
        if (n < 0 && d < 0 || n > 0 && d > 0) f.numer should be > 0
        else if (n != 0) f.numer should be < 0
        else f.numer shouldBe 0
        f.denom should be > 0
      }
  }}
  it should "invalid combos" in {
    forAll(Table(
      ("n", "d"),
      (Integer.MIN_VALUE, Integer.MIN_VALUE),
      (1, Integer.MIN_VALUE),
      (Integer.MIN_VALUE, 1),
      (Integer.MIN_VALUE, 0),
      (1, 0)
    )) { (n: Int, d: Int) =>
      an[IllegalArgumentException] should be thrownBy {new Fraction(n, d)}}
  }
}

import org.scalatest_
导入org.scalatest.prop.PropertyChecks
保护类分数(n:Int,d:Int){
require(d!=0&&d!=Integer.MIN\u值&&n!=Integer.MIN\u值)
数值=如果(d<0)-1*n否则n
val denom=d.abs
覆盖def toString=numer+“/”+denom
}
类SSCeprops使用带有匹配器的PropertyChecks扩展FlatSpec{
它应该在{forAll{(n:Int,d:Int)=>
无论何时(d!=0&&d!=Integer.MIN\u值&&n!=Integer.MIN\u值){
val f=新分数(n,d)
如果(n<0&&d<0 | | n>0&&d>0),则f.numer应大于0
如果(n!=0),则f.numer应小于0
否则f.numer应为0
f、 denom应大于0
}
}}
它在中应该是“无效组合”{
福尔(表(
(“n”、“d”),
(Integer.MIN_值,Integer.MIN_值),
(1,整数。最小值),
(整数最小值,1),
(整数最小值,0),
(1, 0)
)){(n:Int,d:Int)=>
[IllegalArgumentException]应该由{新分数(n,d)}抛出
}
}

这是一个有效的解决方案!非常感谢。你可能帮我省去了无数个小时的猜测,试图填补遗漏的细节。(正如您可能注意到的,github上的源代码省略了相同的细节。)很高兴能帮助您,对于示例,这是真的,他们没有解释,有时很难找到导入,而且github也没有太大帮助,正如您所说的,如果您认为这是一个有效的答案,请标记它。提前谢谢
import org.scalatest._
import org.scalatest.prop.PropertyChecks

protected class Fraction(n: Int, d: Int) {
  require(d != 0 && d != Integer.MIN_VALUE && n != Integer.MIN_VALUE)
  val numer = if (d < 0) -1 * n else n
  val denom = d.abs
  override def toString = numer + " / " + denom
}

class SscceProps extends FlatSpec with PropertyChecks with Matchers {
  it should "valid combos" in { forAll { (n: Int, d: Int) =>
      whenever(d != 0 && d != Integer.MIN_VALUE && n != Integer.MIN_VALUE) {
        val f = new Fraction(n, d)
        if (n < 0 && d < 0 || n > 0 && d > 0) f.numer should be > 0
        else if (n != 0) f.numer should be < 0
        else f.numer shouldBe 0
        f.denom should be > 0
      }
  }}
  it should "invalid combos" in {
    forAll(Table(
      ("n", "d"),
      (Integer.MIN_VALUE, Integer.MIN_VALUE),
      (1, Integer.MIN_VALUE),
      (Integer.MIN_VALUE, 1),
      (Integer.MIN_VALUE, 0),
      (1, 0)
    )) { (n: Int, d: Int) =>
      an[IllegalArgumentException] should be thrownBy {new Fraction(n, d)}}
  }
}