我们正在用 Kotlin 编写一个 DSL,我们在该 DSL 中添加了一些限制。 例如,
table {
tr {
td {
}
}
}
在这里,我们限制不应在另一个td
内调用td
。
我们如何测试这一点?Kotlin 中是否有任何 dsl-testkit 或匹配器库可以让我们在 scalatest 中做类似"shouldNot compile"的事情
一种解决方案是使用 Kotlin 脚本引擎,让它运行一个包含应被拒绝的 DSL 构造的脚本,并断言脚本未编译。
您可能会觉得有用的链接:
- 从常规 Kotlin 程序运行 Kotlin 脚本 (kts( 由 Kotlin 专业知识博客
s1monw1/KtsRunner
,一个以编程方式封装运行 Kotlin 脚本的库- 在 Kotlin 端描述了一个更新、更强大、但更复杂的脚本支持实现,在 KEEP-75 中有所描述 。