我们正在用 Kotlin 编写 DSL,并且在该 DSL 中添加了一些限制。例如,
table {
tr {
td {
}
}
}
在这里,我们限制td
不应该在另一个内部调用td
。
我们如何测试这个?kotlin 中是否有任何 dsl-testkit 或 matcher 库可以让我们在 scalatest 中执行类似“shouldNot compile”之类的操作
我们正在用 Kotlin 编写 DSL,并且在该 DSL 中添加了一些限制。例如,
table {
tr {
td {
}
}
}
在这里,我们限制td
不应该在另一个内部调用td
。
我们如何测试这个?kotlin 中是否有任何 dsl-testkit 或 matcher 库可以让我们在 scalatest 中执行类似“shouldNot compile”之类的操作
一种解决方案是使用 Kotlin 脚本引擎,使其运行带有您的 DSL 构造的脚本,该脚本应该被拒绝,并断言该脚本没有编译。
您可能会发现有用的链接:
s1monw1/KtsRunner
,一个以编程方式封装运行 Kotlin 脚本的库