Как проверить функции, присутствующие в файле drool, без вызова правила?
Я хочу сделать junit для моих файлов правил. В моем файле правил широко представлены две вещи: одна - это правило, а другая - функция, которую я вызываю из раздела правила. Теперь я хочу проверить (утвердить) эту функцию изолированно на основе контрольного примера. Есть ли способ сделать это?
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(), которую я хочу вызвать.
1 ответ
Если вы просто хотите выполнить модульное тестирование своей функции в правиле, я бы предложил переместить ее в статический метод в отдельном файле класса. Вы можете легко протестировать это.
например, класс с печатью в качестве статического метода
package my.package
public class MyFunctions {
public static void print(String string){
System.out.println(string);
}
}
Затем вы можете импортировать статический метод как функцию в вашем правиле, заменив определение функции оператором import:
import function my.package.MyFunctions.print