如何扩展 scalatest 断言宏
How to extend scalatest assert macro
我要转:
eventually { assert(x == 0) }
进入:
verify { x == 0 }
并且仍然收到一条不错的控制台消息:
Caused by: org.scalatest.exceptions.TestFailedException: 1 did not equal 0
如何实现verify
?
verify
也必须是宏:
import scala.language.experimental.macros
import scala.reflect.macros.blackbox
class VerifyMacro(val c: blackbox.Context) {
import c.universe._
def verifyImpl(condition: Tree): Tree =
q"${c.prefix}.eventually(${c.prefix}.assert($condition))"
}
import org.scalatest._
import org.scalatest.concurrent._
trait Verifications extends Assertions with Eventually {
def verify(condition: Boolean): Assertion = macro VerifyMacro.verifyImpl
}
我要转:
eventually { assert(x == 0) }
进入:
verify { x == 0 }
并且仍然收到一条不错的控制台消息:
Caused by: org.scalatest.exceptions.TestFailedException: 1 did not equal 0
如何实现verify
?
verify
也必须是宏:
import scala.language.experimental.macros
import scala.reflect.macros.blackbox
class VerifyMacro(val c: blackbox.Context) {
import c.universe._
def verifyImpl(condition: Tree): Tree =
q"${c.prefix}.eventually(${c.prefix}.assert($condition))"
}
import org.scalatest._
import org.scalatest.concurrent._
trait Verifications extends Assertions with Eventually {
def verify(condition: Boolean): Assertion = macro VerifyMacro.verifyImpl
}