我想使用OR运算符在逻辑上将两个ScalaTest断言连接在一起。
问题是,这两个断言正在检查完全不同的事物。在类似的帖子中有一些使用or
的示例,但这不是我想要的。
大多数帖子正在检查同一变量上的“或”条件,即
actual should (be (a [RuntimeException]) or be (a [Thread]))
但是我想加入完全不同的东西,即
actual should (be (a [RuntimeException]) or somethingElse should be(0)
但是,此指令无法编译,因为or
不是assertion
的成员。我尝试了几种带括号的语法,但是没有一个正在编译:
(count should be(0)) or (isCentroid should be(true))
(count should be(0)) || (isCentroid should be(true))
如何将这两个断言与OR结合在一起?
答案 0 :(得分:0)
使用匹配器时失败的测试会抛出TestFailedException
,因此我们可以将断言包装在Try
中,然后使用标准的Scala逻辑运算符,如下所示:
val P1 = Try(count should be(0)).isSuccess
val P2 = Try(isCentroid should be(true)).isSuccess
assert (P1 || P2)
失败时,我们应该看到类似以下内容的
:P1 was false, and P2 was false
ScalaTestFailureLocation: example.HelloSpec at (HelloSpec.scala:29)
org.scalatest.exceptions.TestFailedException: P1 was false, and P2 was false