core/src/test/java,覆盖解析、解释/编译一致性、运行时缓存与扩展调用。
下面列出主要分组、运行方式与补充建议。
测试分组与入口
- 解析器:
parser/*(如EnhancedParserTest,ErrorRecoveryTest,ParserTest)验证词法/语法与错误恢复能力。 - 解释器与字节码:
interpreter/*与interpreter/bytecode/*对比解释执行与编译执行结果。 使用FluxonTestUtil.runSilent,涵盖上下文调用、索引、异步、异常等。 - 运行时:
runtime/EnvironmentCacheTest检查函数/扩展缓存烘焙与脏标记策略。 - JSR-223:
core-jsr223/src/test/java下的FluxonScriptEngineTest覆盖脚本引擎行为。 - 基准测试:
benchmark/*提供 JUnit 版性能测试与 JMH 基准。
解释/编译一致性
FluxonTestUtil 提供便捷方法:
run(source)/runSilent(source):先解释执行,再编译执行并比较返回值,返回TestResult。interpret(source):仅解释执行。
runSilent 会将编译产物写入 dump/TestScript.class,长期运行前可清理该目录。
编写新测试时,优先覆盖解释与编译双路径,确保优化或新语法不会在两种执行模式下出现差异。
性能与基准
ParserPerformanceTest:JUnit 版性能抽样,适合本地快速对比。ParserJmhBenchmark:专业基准,运行方式:./gradlew jmh。默认配置在build.gradle.kts的jmh块中,可按需调整迭代/预热。SimpleFluxonJexlBenchmark:对比 Fluxon 与 JEXL 的性能。
jfr/ 已有样例),或在基准脚本里增加自定义场景。
覆盖新增功能的建议
- 新增运行时函数或扩展:添加对应的执行路径测试,并在需要时更新
FluxonRuntimeTest.registerTestFunctions供解析测试使用。 - 新语法/运算符:在
parser与interpreter两侧各添加至少一个用例,覆盖正常路径与错误路径。 - 并发/异步逻辑:使用
ThreadPoolManager#getActiveTaskCount()或主线程执行器相关的断言,防止任务泄漏或线程模型回归。 - 工具链(函数目录、控制台):可通过集成测试或快照验证生成的 JSON/命令输出与预期一致。
fluxon-functions.json 或 API 行为变更时一并更新说明,可以显著降低补全与运行时不一致的风险。