Поведение SoapUI при вызове teststep из testcase отличается

#soapui

#soapui

Вопрос:

У меня интересное поведение по отношению к SoapUI 5.0.0.

У меня есть шаг HTTP-тестового запроса, настроенный для отправки текста / xml.

В запросе у меня есть расширение атрибутов для некоторых атрибутов в запросе, аналогичное:

 FirstServiceDate="${=pluto.ServiceDate.adjustDate(modelItem, 1)}"
  

Обратите внимание, что ссылка вызывает функцию Java, которую я создал и поместил в файл jar в папке bin / ext моей установки.

Теперь, когда я отправляю запрос с помощью кнопки воспроизведения шагов запроса, замена атрибута происходит, как и ожидалось, и правильное значение атрибута помещается в содержимое необработанного сообщения и отправляется соответствующим образом.

Однако, когда я запускаю тестовый пример, который включает тестовый шаг, замена вместо этого помещает в вывод следующее сообщение об ошибке:

 No signature of method: static pluto.ServiceDate.adjustDate() is applicable 
  

Это будет указывать на то, что при выполнении тестового шага он больше не может найти / использовать рассматриваемый класс Java.

Является ли это преднамеренным ограничением версии, отличной от pro, в отношении замены запроса или мне нужно сделать что-то еще, чтобы класс был найден при запуске тестового примера?

РЕДАКТИРОВАТЬ: только что протестировано и с версией PRO. Это ограничение / ошибка все еще присутствует, если мне не нужно найти файл jar где-то еще.

Комментарии:

1. Попробуйте поместить свой файл .jar также в $SOAPUI_HOME/lib . Некоторое время назад в SoapUI была ошибка, которая, все еще , возможно, не была исправлена.

2. @SiKing — спасибо за ответ. К сожалению, это не работает. Похоже, что класс TestCaseRunner должен настроить свой собственный classloader, который ограничивает то, что загружается и доступно в версии, отличной от pro.

3. Это должно работать и в версии, отличной от Pro!

4. Кажется, в версии 5.0.0 это не работает, не для Pro и не для pro-версий.

5. Если у вас есть лицензия a -Pro, вы можете представить это как ошибку. soapui.org/Support/support-overview-place.html

Ответ №1:

Подсказка заключается в формулировке ошибки

 No signature of method .... is applicable
  

SoapUI фактически находит библиотеку, однако тип объекта, который передается в качестве ModelItem, отличается в зависимости от того, выполняется ли он из TestStep или из TestCase.

При изменении типа ModelItem на AbstractModelItem код затем работает.

Имейте в виду, что разные механизмы предоставляют разные классы ModelItem.