QLExpress 规则单元测试框架:上线前自动跑 1000 条用例,拦截逻辑错误!
运营在后台配了一条规则:orderAmount > 10000 && userLevel == 'VIP' 标记为大额订单。配完觉得没问题,直接上线。半小时后客服被用户打爆——所有 VIP 用户的订单都被拦截了,不管金额大小。排查下来发现是规则里多打了个 >,本来应该是 <。就一个字符,损失了几十万。 规则引擎的优点是灵活——运营可以随时改规则,不用开发介入。但灵活的另一面是危险:没有编译器帮你检查,一个手误就上线了。 今天聊聊怎么给规则加上自动化测试——让 1000 条用例在规则上线前跑一遍,逻辑错误当场拦截。 规则引擎的测试为什么难做 传统代码的测试很成熟:JUnit、Mockito、覆盖率工具,流水线上跑一下,绿了就上线。但规则引擎面前,这套流程用不上。 规则不是 Java 代码。它是运营在后台配的一段表达式字符串,比如: productPrice * 0.8 > competitorPrice && stockQty < 100 这段东西没有编译期检查。你没法给它写 JUnit,因为在 Java 眼里它只是一个字....