sul*_*man 4 testing scala scalatest
我刚刚开始使用 WordSpec,遇到了一个无法解决的问题。
我想在一个单元测试中断言两个单独的值。假设我有val result1和val result2,我需要第一个采用特定值,第二个采用另一个特定值。
如果可以连接/减少/折叠断言,这将非常容易,但我认为我不能。也许是这样的:
result1 should be (1) ++ result2 should be (2)
Run Code Online (Sandbox Code Playgroud)
结果将是一个新的断言,只有当两个断言都为真时,该断言才为真。
如果我按如下方式编写它们,则只会采用最后一个值。
result1 should be (1)
result2 should be (2)
Run Code Online (Sandbox Code Playgroud)
有谁知道解决这个问题的方法吗?
对于 ScalaTest 3.0.1,我看到的两个选项是:
\n1.) 使用元组(如 @krzysztof-at\xc5\x82asik 评论的那样)
\n(result1, result2) should be (1, 2)\nRun Code Online (Sandbox Code Playgroud)\n2.) 使用Checkpoint
val cp = new Checkpoint()\n\ncp { result1 should be (1) }\ncp { result2 should be (2) }\n\ncp.reportAll()\nRun Code Online (Sandbox Code Playgroud)\n\n\nCheckpoint 类,它允许在测试中执行多个断言,并在测试结束时累积并报告所有失败。
\n
-- ScalaTest 的检查点 scaladoc
\n就我个人而言,我喜欢Checkpoint,因为它可以更好地区分所主张的内容。然而,我发现的一个潜在缺点是should be (x),与返回 不同Assertion,Checkpoint#reportAll()返回Unit。我有一个需要 return 的方法Assertion,而我使用的解决方法是 return org.scalatest.Succeeded。
例如,
\ndef someMethod(): Assertion = {\n ...\n cp.reportAll()\n Succeeded\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2209 次 |
| 最近记录: |