Как проверить функции, присутствующие в файле 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
Другие вопросы по тегам