在scala宏上执行测试的建议方法是什么?
我意识到由于需要单独编译,需要两个项目。如有必要,此步骤可以接受并且大部分都是清楚的。
但是你怎么断言宏扩展失败呢?如果没有一些特殊的工具,测试用例就不会编译,因此整个测试项目都不会编译。
我认为这个断言需要另一个格式为
的宏errors(code: => _): List[CompileError]
返回内部宏的编译错误。如果它们应该发生警告,那么测试警告就会出现同样的情况......
Scala宏是否有一些现有的测试工具?
答案 0 :(得分:2)
您可以使用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
。
答案 1 :(得分:1)
您可以使用twitter eval检查代码是否复制