【发布时间】:2011-01-31 01:21:53
【问题描述】:
我们刚刚在对消息转换的响应流进行单元测试时遇到了一个有趣的问题。 此流程的结果是(XML 到 NON XML)二进制输出,它被放入队列。 我们面临的问题是: 此二进制输出消息的长度与非 xml 数据的长度不匹配,我们将其保存为 MFL 格式测试工具的预期结果。我们的推断是 OSB 在内部对此消息应用了一些编码,从外观上看,它是代理/业务服务中存在的 UTF-8。于是我们把expected的编码改成了UTF-8,测试用例成功了。但仔细调查后发现 UTF-8 本身并不能正确表示所有数据。哪里有数据丢失,它用'? ' 象征。 因此,即使 JUNIT 测试用例通过,我们的比较也不正确。
而且中间还有MQ,可能有自己的编码,目前我们无法排除。
我们可以想到两种解决方案: 1. 我们可以通过将期望值和获得值都转换为 Byte[] 来实现比较,以避免任何编码问题。但是我们无法在输出中获得确切的消息长度。 2、我们可以将期望结果和得到的结果都编码成UTF-8以外的通用编码格式,但不确定是哪种,然后进行比较。
有什么想法吗?
【问题讨论】:
标签: java encoding ibm-mq oracle-service-bus osb