testing - Kotlin 测试 DSL 中的限制
问题描述
我们正在用 Kotlin 编写 DSL,并且在该 DSL 中添加了一些限制。例如,
table {
tr {
td {
}
}
}
在这里,我们限制td
不应该在另一个内部调用td
。
我们如何测试这个?kotlin 中是否有任何 dsl-testkit 或 matcher 库可以让我们在 scalatest 中执行类似“shouldNot compile”之类的操作
解决方案
一种解决方案是使用 Kotlin 脚本引擎,使其运行带有您的 DSL 构造的脚本,该脚本应该被拒绝,并断言该脚本没有编译。
您可能会发现有用的链接:
- 从Kotlin 专业知识博客的常规 Kotlin 程序运行 Kotlin 脚本 (kts)
s1monw1/KtsRunner
,一个以编程方式封装运行 Kotlin 脚本的库- 在KEEP-75中描述了在 Kotlin 端更新、更强大但更复杂的脚本支持实现
推荐阅读
- python - 音乐机器人 discord.py 的命令
- javascript - 如何创建单词进出动画
- mysql - MariaDB 拒绝 LOCALHOST 连接
- c++ - 创建线程时出现 C++ 错误,静态断言失败:转换为右值后,std::thread 参数必须是可调用的
- sql - 将 Bigquery 行内容拆分为新的单独列
- java - 如何让我的代码输出更多小数位
- r - 如何从具有特定条件的数据框中找到最大值?
- sql - 从postgresql中的三个表中获取数据
- c# - 如何在 C# 中为用户输入正确使用带有 null int 值的 while 循环
- java - 如何在 Java 中将输入(字符串)转换为日期?