问题标签 [scalacheck]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 使 ScalaCheck 测试具有确定性
我想暂时使我的 specs2 测试套件中的 ScalaCheck 属性测试具有确定性,以简化调试。现在,每次我重新运行测试套件时都可能生成不同的值,这让调试变得令人沮丧,因为您不知道观察到的行为的变化是由您的代码更改引起的,还是仅仅由生成的不同数据引起的。
我怎样才能做到这一点?有没有官方的方法来设置 ScalaCheck 使用的随机种子?
我sbt
用来运行测试套件。
奖励问题:是否有官方方法可以打印出ScalaCheck 使用的随机种子,以便您甚至可以重现非确定性测试运行?
specs2 - ScalaCheck 选择无需替换
如何编写一个Gen[A]
永远不会返回相同对象两次的使用 ScalaCheck?
可以重复选择同一个对象,所以这是行不通的。
我在 specs2 中编写了一个可变规范,我想这样做的原因是,在某种意义上,被测系统的行为应该只允许每个对象“使用”一次。
编辑:“相同”我的意思是根据 相同==
,并且对象实际上是字符串,所以我不能每次都创建相同的字符串。
scala - 从 specs2 中失败的 Scalacheck 属性中识别完全失败的匹配
我正在运行一个 specs2 测试套件sbt
,使用该test
命令。当 ScalaCheck 属性失败时,我只会在我的代码中看到 specs2 匹配失败的文件名和行号——当它碰巧是一种实用方法时,它不是很有用,它执行我经常做的一种常见类型的检查. 堆栈跟踪会更好。
我已经last
在 sbt 中尝试过该命令,但这并没有显示我正在寻找的堆栈跟踪。唯一的堆栈跟踪last
显示是这个通用的:
我还在 java.util.logging 属性文件中启用了 FINEST 日志记录级别。
现在,我正在使用 Eclipse 调试器解决这个问题,但在某些情况下,它是不必要的重量级。
unit-testing - Scalacheck,单元测试多进程算法
我目前正在使用 MPJ-Express(即 Java MPI 变体)为多进程并行算法开发 Scala 框架。
MPJ-Express 和基本上所有 MPI 变体通过使用相同程序启动多个进程来工作。由于我无法控制运行时的进程(我的程序不会产生进程),因此由于以下原因,我无法使用标准单元测试框架:
并非所有进程在执行后都会拥有结果的本地副本(理想情况下,结果应该在任意根进程中收集)
缺乏对标准输出的控制。仅从单个进程中获取输出并不容易。
- 缺乏流量控制。所有进程必须同时进入同一个测试,以允许单程序多数据算法。
数字 2 主要是问题所在,因为 3 可能会按预期工作,而 1 可以通过额外的通信操作来修复。有没有人有实践经验,或者知道多进程算法的更好的单元测试策略?
编辑
现在,我似乎对使用scalacheck的以下代码很幸运:
上面的代码将 scala-println 方法重新路由到除 p=0 之外的所有其他进程的 nop 操作。我应该能够使用并行方法运行测试套件,只允许根进程来验证结果。以上产生以下输出:
scala - 为 scalacheck 函数获取 2 个隐式
我正在使用 scalacheck,现在正处于通用编程汤的中间。官方指南显示了这个例子:
同时,对于我的测试,我需要一个 Array[Array[T]] 类型的矩阵。我尝试了以下功能:
在这里,我遇到了麻烦。编译器说:
此行有多个标记 - 方法 containerOfN 的参数不足:(隐式 b:org.scalacheck.util.Buildable[T,Array])org.scalacheck.Gen[Array[T]]。未指定值参数 b. - 找不到参数 b 的隐式值:org.scalacheck.util.Buildable[T,Array] - 找不到参数 b 的隐式值:org.scalacheck.util.Buildable[T,Array] - 方法的参数不足containerOfN: (隐式 b: org.scalacheck.util.Buildable[T,Array])org.scalacheck.Gen[Array[T]]。未指定值参数 b.
我知道这样的事情通常可以通过向函数添加隐式参数来解决,但是,我还没有完成这项工作。
我在构建泛型数组时通常会遇到这个错误,例如:
但是,恐怕我不完全了解正在发生的事情或为什么需要这样做。
有人可以解释如何制作正确的矩阵函数以及scalacheck中的使用示例吗?非常欢迎对有关使用隐式类清单构建序列的详细信息进行全面解释!
编辑
还是不行。Buildable[Array[T],Array] 需要隐式...不知道如何得到这个,因为我只能添加 1 个隐式参数:/
scala - Scalacheck 道具类型不匹配
我遇到过这个错误几次。这很不言自明,不匹配出现在我的 ans var 上,它是一个 Int,我相信它应该是这样,但是它需要类型 prop。我感觉它与语法有关,我构建它的方式,但让我知道你的想法:
scala - Scalacheck:生成与生成器列表对应的列表
我想生成一个整数列表,该列表对应于ScalaCheck
.
对于给定的gens
,我想创建一个生成器listGen
,其有效样本可以是List(2, 2000, 0, 6)
。这是我第一次尝试使用元组。
这可行,但我不想使用元组,因为生成器列表gens
是动态创建的,并且列表的大小不是固定的。有没有办法用列表做到这一点?
我希望listGen
在 scalacheckforAll
属性检查中使用 list() 的生成器。
这看起来像是一个玩具问题,但这是我能做的最好的事情,以创建一个独立的片段来重现我面临的实际问题。
java - 在 Java 中随机生成 *interesting* 字符串
我一直在使用 ScalaCheck 进行自动单元测试。它的默认字符串生成器(即它的默认Arbitrary[String]
实例)有点太强大了,通常会产生一个不可读的混乱,主要由我不想支持的字符组成,我的系统甚至无法渲染。
我已经着手创建更多Arbitrary[String]
实例,并试图找出那里有什么。以下是一些有助于测试的 String 类示例:
- 基本多语言平面字符串
- 星光弦
- 拉丁字符串(包括扩展 a/b)
- 法语单词
- 从左到右的语言字符串
- 从右到左的语言字符串
- 中文句子
- “网络字符串”(从构成网络内容 99.9999% 的字符集中提取的字符串)
- 动用你的想象力 ...
是否有可以随机生成这些或类似字符串的库?
scala - 为什么 sbt 在成功解析 scalacheck 后给出“object scalacheck 不是包 org 的成员”?
我在中添加了以下内容build.sbt
:
在compile
sbt 中的项目上,依赖关系已成功解决,如日志中所示:
但是,在编译一个文件时出现以下错误。
这可能是什么原因?
有没有办法查看 sbt 在compile
任务期间使用的类路径?
请注意,该项目在 ScalaIDE 中构建良好。(我使用 sbteclipse 生成 eclipse.classpath
文件。生成的.classpath
有正确的 scalacheck 条目。)
scala - 从 Scala 2.9.2 中的 scala 运行器的类路径中排除 scalacheck
一个scalacheck
jar 意外地包含在 Scala 2.9.2 的标准发行版的lib
目录中,以及标准的 scala 运行时类(例如scala-library.jar
)。这是被发现的,并为后续的 Scala 发行版修复。
我想运行 scala 2.9.2 解释器并使用不同版本scalacheck
的lib
.
我试过了:
所有这些仍然使用scalacheck.jar
. 除了从中删除 jar 之外,还有什么方法lib
可以运行解释器,将类路径中的 jar 排除在外lib
?