Сравнение строк не соответствует, но 'содержит' соответствует - PullRequest
0 голосов
/ 20 сентября 2019

У меня странная проблема с использованием groovy, я нашел обходной путь, но я совсем не удовлетворен, поэтому, возможно, кто-то сможет мне помочь:

Я использую ReadyAPI 2.8.В моих тестовых случаях у меня есть отличные шаги.В одном из них я восстанавливаю строку из предыдущего шага тестирования и хочу выполнить определенную обработку, если она соответствует строке «TJA470».Предыдущий шаг теста дает строку, которая является выводом команды ssh.

вот код шага groovy:

def hbox_ref = context.expand( '${get current HBox reference#hbox_ref}' )
// this returns me the data as a String

log.info hbox_ref 
log.info "\"$hbox_ref\"" // to check if there is no spurious blank
log.info hbox_ref.class

log.info (hbox_ref == "TJA470") => returns false
log.info (hbox_ref.equals("TJA470")) => returns false
log.info (hbox_ref.contains("TJA470")) => returns true

вот результат консоли:

Fri Sep 20 16:13:17 CEST 2019: INFO: TJA470

Fri Sep 20 16:13:17 CEST 2019: INFO: "TJA470
"
Fri Sep 20 16:13:17 CEST 2019: INFO: class java.lang.String
Fri Sep 20 16:13:17 CEST 2019: INFO: false
Fri Sep 20 16:13:17 CEST 2019: INFO: false
Fri Sep 20 16:13:17 CEST 2019: INFO: true

Простой тест == или равен, хотя есть различия, я использую их во всех других сравнениях того же типа, и он работает.

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

Если я выполняю тот же сценарий в таком инструменте, как «отличная площадка», он работает, как и ожидалось!: (

Я вообще не специалист в Groovy, и, должно быть, я что-то упустил, но мне это очень сложно!

Если кто-то может помочь ... спасибо

1 Ответ

1 голос
/ 20 сентября 2019

Благодаря SO я обнаружил проблему: при копировании / вставке возврата консоли в вопросе он показывает, что в конце текста есть специальный символ.Это не видно в выходных данных журнала SOAPUI ... Я добавил следующую обработку в свой скрипт:

def hbox_ref = context.expand( '${get current HBox reference#hbox_ref}' )
hbox_ref = hbox_ref.replaceAll("[^a-zA-Z0-9]+","")

или

hbox_ref = hbox_ref.replaceAll("[^\\w]+","")

это дает

log.info (hbox_ref == "TJA470") => returns true (at last !)

более элегантное решение (благодаря SiKing):

(hbox_ref.trim() == "TJA470")

вместо использования replaceAll

...