使用scalatest检查Scala宏的编译错误

使用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

测试Scala宏产生的编译错误是否比粘贴的bellow更优雅

  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]”。输入错误(