junit - 使用junit进行Drools测试

标签 junit drools rule-engine drools-flow jboss-rules

使用junit测试drools规则的最佳实践是什么?

到目前为止,我们使用 junit 和 dbunit 来测试规则。我们将样本数据放入 hsqldb。我们有几个规则包,到项目结束时,很难做出好的测试输入来测试某些规则而不触发其他规则。

所以确切的问题是如何将 junit 中的测试限制为一个或多个特定的测试规则?

最佳答案

我个人使用单元测试来测试孤立的规则。我不认为它有什么太大的问题,只要你不陷入一种错误的安全感,即你的知识库正在发挥作用,因为孤立的规则正在发挥作用。测试整个知识库更为重要。

您可以使用 AgendaFilter 编写隔离测试和无状态 session

StatelessSession session = ruleBase.newStatelessSesssion();

session.setAgendaFilter( new RuleNameMatches("<regexp to your rule name here>") );

List data = new ArrayList();
... // create your test data here (probably built from some external file)

StatelessSessionResult result == session.executeWithResults( data );

// check your results here.

代码来源:http://blog.athico.com/2007/07/my-rules-dont-work-as-expected-what-can.html

关于junit - 使用junit进行Drools测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3862389/

相关文章:

java - 如何使用 jUnit 对 Servlet 过滤器进行单元测试?

java - 如何在 Drools 中管理规则中的 2 个参数(均为整数)?

java - 如何在简单的规则中使用变量?

java - OSGi 单元测试和包导出

java - 无法使用 JUnitParams 运行 PowerMock

java - 从 Drools 规则执行 bpmn 文件

java - Ant 构建成功甚至语法错误

java - Drools 集成到 Web 应用程序中

java - drools (6.2) 事实不会在有状态 session 中重新评估

java - AssertJ:一种检查对象字段值是否包含特定模式(正则表达式)的方法