当ScalaTests失败时,测试框架会输出一个详细的错误输出,如下所示:
assert(a == b || c >= d)
// Error message: 1 did not equal 2, and 3 was not greater than or equal to 4
它如何理解断言表达式的结构?它是否使用一些Scala技巧来覆盖比较运算符,或者它是否可以访问Scala编译器的AST?
答案 0 :(得分:1)
assert
的实现由宏提供,因此 - 简而言之 - 是的,它可以访问AST。
如果您对具体细节感到好奇,我建议您查看源代码:https://github.com/scalatest/scalatest/blob/d40d278f2bb8e73431b942d87881fb6dbab75cb9/scalatest/src/main/scala/org/scalatest/AssertionsMacro.scala
和