我刚刚开始使用WordSpec,遇到了一个我无法解决的问题。
我想在一个单元测试中对两个单独的值进行断言。假设我有val result1和val result2,我需要第一个来获得一个特定的值,而第二个需要另一个特定的值。
如果可以在断言上连接/减少/折叠,这将非常容易,但我认为我做不到。也许是这样的:
result1 should be (1) ++ result2 should be (2)结果将是一个新的断言,只有当这两个断言都为真时才是正确的。
如果我把它们写在下面,它只会取最后一个值。
result1 should be (1)
result2 should be (2)有谁知道怎么绕过这件事吗?
发布于 2021-06-15 21:17:05
对于ScalaTest 3.0.1,我看到两个选项:
1.)使用元组( @krzysztof-atłasik已发表评论)
(result1, result2) should be (1, 2)2.)使用Checkpoint
val cp = new Checkpoint()
cp { result1 should be (1) }
cp { result2 should be (2) }
cp.reportAll()类检查点,它允许在测试中执行多个断言,并在测试结束时一起累积和报告任何故障。
-ScalaTest的检查点
就我个人而言,我喜欢Checkpoint,因为它可以更好地分离所断言的内容。但是,我发现的一个潜在缺点是,与返回should be (x)的Assertion不同,Checkpoint#reportAll()返回Unit。我有一个需要返回Assertion的方法,我使用的工作是返回org.scalatest.Succeeded。
例如,
def someMethod(): Assertion = {
...
cp.reportAll()
Succeeded
}https://stackoverflow.com/questions/61528075
复制相似问题