我想为我的规则文件做junit。我的规则文件大致有两件事,一是规则,另一是我从规则的 then 部分调用的函数。现在,我想根据测试用例对这个 功能 进行测试(断言)。有什么办法可以做到这一点?
function void print(String string){
System.out.println(string);
return true;
}
rule "XXYJK"
dialect "mvel"
salience 10
when
objofTheclass : exampleClass() eval
(
objofTheclass.isKeyMatched("XXYJK")
)
then
print("XXYJK");
end
现在,我可以像这样从Java代码中调用此规则。
statelessSession.setAgendaFilter(new RuleNameEqualsAgendaFilter("XXYJK"));
statelessSession.executeWithResults(rulesEngineParameters);
现在,我想做类似的事情而不调用规则本身或执行整个drl文件。我只想调用print()函数。
答案 0 :(得分:0)
如果只想对规则中的函数进行单元测试,建议将其移动到单独的类文件中的静态方法中。您可以轻松地对该单元进行测试。
例如打印为静态方法的类
package my.package
public class MyFunctions {
public static void print(String string){
System.out.println(string);
}
}
然后,您可以通过将函数定义替换为import语句,将静态方法作为函数导入规则中:
import function my.package.MyFunctions.print