使用scalatest检查Scala宏的编译错误
测试Scala宏产生的编译错误是否比粘贴的bellow更优雅使用scalatest检查Scala宏的编译错误,scala,scalatest,scala-macros,Scala,Scalatest,Scala Macros,测试Scala宏产生的编译错误是否比粘贴的bellow更优雅 assert(intercept[TestFailedException](assertCompiles { """case class DuplicatedNamed(@named("x") @named("y") z: Int) |JsonCodecMaker.make[DuplicatedNamed](CodecMakerConfig())""".stripMargin }).getMessage.c
assert(intercept[TestFailedException](assertCompiles {
"""case class DuplicatedNamed(@named("x") @named("y") z: Int)
|JsonCodecMaker.make[DuplicatedNamed](CodecMakerConfig())""".stripMargin
}).getMessage.contains {
"""Duplicated 'com.github.plokhotnyuk.jsoniter_scala.macros.named'
|defined for 'z' of 'DuplicatedNamed'.""".stripMargin.replace('\n', ' ')
})
Shapeless提供了
illTyped
macroGreat提示!只需添加以下依赖项:“com.chuusai”%%“shapeless”%%“2.3.3”%Test
这里还有一篇关于在Scala中测试Trudy Firestone的宏的精彩文章:它真的好得多,因为类型错误
在编译时测试!但有时,即使在匹配错误消息时,它也会失败测试:error:(1024,15)类型检查以意外的方式失败。预期的错误匹配:没有为“java.util.Date”定义隐式的“com.github.plokhtnuk.jsoniter\u scala.core.JsonCodec[\u]”。实际错误:没有为“java.util.Date”定义隐式的“com.github.plokhtnuk.jsoniter\u scala.core.JsonCodec[\u]”。输入错误(