Добрый день!
Столкнулся на проекте с неприятной штукой. Для тестирования сервисов и написания авто-тестов выбрали SoapUI + HermesJMS (сервисы асинхронные через MQ-очереди). И все было радужно, пока в новой сборке разработчики не приделали новый механизм работы с кодировками. В итоге сообщения приходят в бинарном виде, парсятся, но почему-то не в UTF-8, а в Windows-1251 (в предыдущей версии как раз она использовалась).
Причем ответ-то от сервисов вроде как приходит в верном формате, т.е. в UTF-8 (взял бинарное сообщение из очереди и конвертнул через Notepad++ и там сообщение на читабельном русском). А вот если смотреть через GUI SoapUI или HermesJMS, то там уже русский текст превращается в абра-кадабру. И это очень печалит, т.к. инструмент довольно удобный и на нем уже написан приличный пул авто-тестов, но если не смогу придумать как можно конвертировать сообщения в правильный UTF-8, то придется от всего этого отказываться, т.к. разработчики откатывать свое изменение сломавшее все тесты не будут. Вот и вопрос, кто сталкивался с подобным или слышал как и что можно поменять в настройках или может скриптами Groovy. Очень нужна помощь.
Видел вот такой совет, но настройку эту пока не проверял, т.к. на рабочей станции все позакрывали. Никаких прав на Program Files не дают. Бюрократия во всей красе…
SoapUI 4.5.0 Project XML File Encoding Problem
Еще видел что-то про кодирование строк в UTF-8, но не очень понял что к чему. Да и для каждого Assertions’а переписывать условие, чтобы конвертировать строку в UTF-8, не очень бы хотелось…
Есть идеи примеры как String в непонятной абракадабре на Groovy|Jave превратить в нормальную строку на UTF-8 с читаемым русским?
P.S. тесты выглядит как два TestStep’а (Soap Request), при этом EndPoint у них JMS Endoint (через Hermes JMS), первый это Send для отправки сообщения, а второй - Receive для чтения ответа из очереди (разделил т.к. нужно было по CorrelId искать свои сообщения), как сделать подобное в одном TestStep’е я не нашел. При этом у первого эндпоинт настроен только на одну очередь для приема запросов, а второй эндпоинт у Receive настроен на ответную очередь и получает ответ. Поэтому у первого степа нет responce, а у второго нет request. Ответ приходит в receive → responce и там же срабатывают проверки. И вот в них-то и проблема на русских буквах, т.к. из-за неверного парсинга (скорее всего портит сообщение Hermes JMS, но может быть и не он, не знаю как определить кто косячит) ответ содержит кракозябры, а в проверке написана нормальная строка на русском. Не хотелось бы забивать кракозябрами все. Да и с динамическими данными типа ФИО + адрес и т.д. это уже не поможет. Вот и думаю как бы эту проблему решить. Может есть какие-то настройки? Есть у кого идеи/решения?
Версия SoapUI 5.00, Hermes JMS шел в паставке с этим дистрибутивом.
P.P.S. в Custom Properties в поле Encoding стоит значение UTF-8, в заголовке запроса также стоит значение UTF-8. В Header JMS сообщения у него стоит тоже кодировка UTF-8, но по какой-то причине букты в SoapUI через GUI уже в Win-1251 (или после порчи в 1251).