对 Scala 宏执行测试的建议方法是什么?
我意识到由于需要单独编译,因此需要两个项目。如果有必要,这一步是可以接受的,而且基本上是清楚的。
但是你如何断言宏扩展在它应该失败的时候失败呢?如果没有一些特殊的工具,测试用例将无法编译,因此整个测试项目将无法编译。
我认为这个断言需要另一个形式的宏
errors(code: => _): List[CompileError]
它返回内部宏的编译错误。测试是否会发生警告(如果它们应该发生)也需要同样的......
是否有一些现有的 Scala 宏测试工具?
最佳答案
您可以使用 assertDoesNotCompile
来自 ScalaTest .这是一个使用它来测试 Scala 类型检查器的示例:
import org.scalatest.FunSuite
class TypeTest extends FunSuite {
test("String vals can't hold ints") {
assertDoesNotCompile("val x: String = 1")
}
}
您可以传递一个包含宏扩展何时失败的示例的字符串到
assertDoesNotCompile
.请注意,还有 assertCompiles
,如果你觉得有必要。
关于scala - 如何测试 Scala 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22811063/