首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scalatest:合并断言

Scalatest:合并断言
EN

Stack Overflow用户
提问于 2020-04-30 16:21:02
回答 1查看 1.1K关注 0票数 3

我刚刚开始使用WordSpec,遇到了一个我无法解决的问题。

我想在一个单元测试中对两个单独的值进行断言。假设我有val result1val result2,我需要第一个来获得一个特定的值,而第二个需要另一个特定的值。

如果可以在断言上连接/减少/折叠,这将非常容易,但我认为我做不到。也许是这样的:

代码语言:javascript
复制
result1 should be (1) ++ result2 should be (2)

结果将是一个新的断言,只有当这两个断言都为真时才是正确的。

如果我把它们写在下面,它只会取最后一个值。

代码语言:javascript
复制
result1 should be (1)
result2 should be (2)

有谁知道怎么绕过这件事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-15 21:17:05

对于ScalaTest 3.0.1,我看到两个选项:

1.)使用元组( @krzysztof-atłasik已发表评论)

代码语言:javascript
复制
(result1, result2) should be (1, 2)

2.)使用Checkpoint

代码语言:javascript
复制
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

例如,

代码语言:javascript
复制
def someMethod(): Assertion = {
  ...
  cp.reportAll()
  Succeeded
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61528075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档