gpt4 book ai didi

java - 如何在不调用规则的情况下测试 drool 文件中存在的函数?

转载 作者:行者123 更新时间:2023-12-02 03:09:18 26 4
gpt4 key购买 nike

我想为我的规则文件执行 junit。我的规则文件大致有两件事:

  1. 规则
  2. 一个辅助函数(在 drools 中,而不是 Java),我从规则的 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() 函数。

最佳答案

如果您只想对规则中的函数进行单元测试,我建议将其移动到单独的类文件中的静态方法。您可以轻松地对其进行单元测试。

例如将 print 作为静态方法的类

package my.package
public class MyFunctions {
public static void print(String string){
System.out.println(string);
}
}

然后,您可以通过用 import 语句替换函数定义,将静态方法作为函数导入规则中:

import function my.package.MyFunctions.print

关于java - 如何在不调用规则的情况下测试 drool 文件中存在的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57003978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com