ScalaTest-如何检查序列的所有项是否与谓词匹配?
有没有更好的方法显示错误消息?例如,下面的代码ScalaTest-如何检查序列的所有项是否与谓词匹配?,scala,scalatest,Scala,Scalatest,有没有更好的方法显示错误消息?例如,下面的代码 它应该在中“检查项目是否满足谓词”{ 列表(1,2,3,4,5,6)。对于所有(x=>x
它应该在中“检查项目是否满足谓词”{
列表(1,2,3,4,5,6)。对于所有(x=>x<5)都应该相等(true)
}
仅给出以下错误,无任何说明:
“假不等于真”
谓词不仅可以是
least
表达式,还可以是任何其他函数。对于我找到的最少的。您可以从
“检查项目是否满足谓词”
到
“检查列表中的所有项目是否小于5”
然后答案就更有意义了
如果您想要一个更有意义的答案,可以调用fail
,如
fail("I've got a bad feeling about this.")
您还可以以多种方式使用断言,请阅读以了解更多信息。例如:
assume(database.isAvailable, "The database was down again")
List(1,2,3,4,5,6)。foreach{uu}应该是<5}
不仅可以是最小表达式,还可以是任何其他函数
使用try
其中,pred:T=>Boolean
,它输出带有失败索引和谓词的信息性错误消息,如
- should check that items satisfy predicate *** FAILED ***
forAll failed, because:
at index 4, pred(x) was false (HelloSpec.scala:41)
in List(1, 2, 3, 4, 5, 6) (HelloSpec.scala:41)
没有尝试过,但你确定它能解析吗?我总觉得应该是应该是<5
,就像这样<代码>value()method(should)value(be)method(@AndreyTyukin是的,你是对的……我不知道在每个特定的情况下会用哪种方式编译,只要试一下就可以了:)我已经更新了注释:实际上很容易发现,因为早期所有的scala edsl都有expression-methodName-expression-methodName-expression
等结构。我没有“记住”任何关于应该是或应该是
的内容,我只是检查它是否交替。是的。。。仍然要记住,应该是一种方法,而不是。。。虽然应该是
仍然是:D
forAll (xs) { x => assert(pred(x)) }
- should check that items satisfy predicate *** FAILED ***
forAll failed, because:
at index 4, pred(x) was false (HelloSpec.scala:41)
in List(1, 2, 3, 4, 5, 6) (HelloSpec.scala:41)