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