我正在尝试使用ScalaTest和ScalaCheck进行基于属性的测试。我的测试概述如下:
import org.scalatest.prop.PropertyChecks
import org.scalatest.{FlatSpec, Matchers}
object Calc {
def add(a:Int, b:Int) = a+b
def div(a:Int, b:Int) = a/b
}
class PropSpec1 extends FlatSpec with Matchers with PropertyChecks {
behavior of Calc.getClass.getName
it should "add integers" in {
forAll { (a: Int, b: Int) =>
Calc.add(a, b) shouldEqual a + b
}
}
it should "divide integers" in {
forAll {
(a:Int, b:Int) => Calc.div(a, b) shouldEqual a/b
}
}
}
现在我看到的是,如果我一遍又一遍地运行PropSpec1中的测试,有时第二个测试会通过,但大多数时候会失败。现在,如果0没有被b测试,那么很明显它会通过,但我认为这是它会一直尝试的事情之一。重复运行sbt clean test时,我看到了相同的行为;有时两项测试都通过了。
这对于基于属性的测试是正常的吗,还是我需要做一些事情(比如总是提供我自己的生成器)?
但我认为这是它一直在尝试的事情之一
假设是一切罪恶的根源。
基本上,你要求Scalacheck为你生成的只是一个< code>Int的样本。一个有效的< code>Int可以是大约40亿个值中的一个。
因为您知道0将导致该函数失败(抛出一个异常),所以您可以像这样简单地过滤掉它:
forAll { (a:Int, b:Int) =>
whenever(a != 0 && b != 0) {
Calc.div(a, b) mustEqual a/b
}
}
页(page的缩写)如果你检查scaladoc中的< code > wheach 函数,会有一个类似的例子。
我想用scala中的jackson反序列化json json_结构: {“type”:“struct”,“fields”:[{“name”:“code_role”,“type”:“string”,“nullable”:true,“metadata”:{“HIVE_type_string”:“string”},{“name”:“libelle_role”,“type”:“string”,“nulla
请看下面的代码,让我知道我哪里做错了? 使用: DSE版本-5.1.0 172.31.16.45:9042连接到测试群集。[cqlsh 5.0.1|Cassandra3.10.0.1652|DSE 5.1.0|CQL规范3.4.4|本地协议v4]使用HELP寻求帮助。 谢谢 斯卡拉 斯卡拉 斯卡拉 我在这里什么都得不到?甚至没有错误。
在计算附加信息时发生内部错误。org.eclipse.jdt.internal.core.SearchableEnvironment.(Lorg/eclipse/jdt/内部/核心/JavaProject; Lorg/eclipse/jdt/核心/WorkingCopyOwner;)
我有一个用斯卡拉写的UDF,我希望能够通过Pyspark会话调用它。UDF 采用两个参数:字符串列值和第二个字符串参数。我已经能够成功地调用UDF,如果它只需要一个参数(列值)。如果需要多个参数,我很难调用UDF。以下是到目前为止我在斯卡拉和Pyspark中能够做的事情: Scala UDF: 在Scala中使用它时,我已经能够注册和使用这个UDF: Scala主类: 以上工作成功。下面是Pysp
我在eclipse中将scala项目转换为使用Maven(只需右键单击project并配置Maven build),这就创建了pom。xml,添加了正确的依赖项,它从maven存储库中提取了所需的JAR,但每当我尝试编译时,我都看不到在target\classes文件夹中生成类文件。然而,我在target\classes文件夹下的相应目录中看到了scala文件的实际源代码。我不确定它为什么要复制t
我的测试代码如下所示: 显然,这是无法编译的,因为需要一个到套接字的路径作为参数,但我不能调用,因为它不是类型,也不能调用,因为mock不将传递给它的类型的参数作为自己的参数。 那么,如何编写一个模拟工厂来传递给我的扫描仪呢?我甚至不知道如何模拟一个需要争论的类!