Мы только что столкнулись с интересной проблемой, с которой мы сталкиваемся во время модульного тестирования потока ответа преобразования сообщения.
Результатом этого потока является двоичный вывод (XML to NON XML), который помещается в очередь.
Проблема, с которой мы сталкиваемся:
Длина этого двоичного выходного сообщения не совпадает с длиной не-xml-данных, которые мы сохраняем как ожидаемый результат от средства тестирования формата MFL. Наш вывод заключается в том, что OSB внутренне применяет некоторую кодировку к этому сообщению, которое, по всей видимости, присутствует в UTF-8 в Proxy / Business Service. Поэтому мы изменили кодировку с ожидаемого на UTF-8, и тестовый пример прошел успешно. Но при тщательном расследовании было установлено, что
UTF-8 по своей сути не представляет все данные правильно. Где бы ни была потеря данных, она обозначается знаком ‘? ' условное обозначение.
Следовательно, наше сравнение неверно, даже если тестовый пример JUNIT проходит.
А также между ними есть MQ, который может иметь свою собственную кодировку, которую мы пока не можем исключить.
Мы можем придумать два решения этого:
1. Мы можем реализовать Сравнение путем преобразования ожидаемого и полученного значений в Byte [], чтобы избежать проблем с кодированием. Но мы не можем получить точную длину сообщения в выводе.
2. Мы можем кодировать как ожидаемый, так и полученный результат в общий формат кодирования, отличный от UTF-8, но мы не уверены, какой именно, а затем выполнить сравнение.
Есть идеи банды?