1

我正在编写一个 JUnit 测试来检查一个统一字符串中的消息(每行一条消息)。格式如下:

[* 给爱丽丝的消息 *]

嘿,第一条消息

第二条消息

[* 给吉姆的消息 *]

抱怨

你在吗?

[* 一般信息 *]

欢迎大家!

这是另一个信息。

问题是我收到的实际字符串的顺序可能会改变(除了总是出​​现在字符串末尾的一般消息)。例如:有一次我可以先得到 Jim 的消息,所以当我尝试使用 assertEquals() 时测试失败。不幸的是,我无权访问生成消息的代码,因此无法进行任何修改。

比较这些字符串并验证它们是否相同的最佳方法是什么?

4

2 回答 2

3

您应该重新组织测试以解决任意重新排序问题,例如,如下所示:

  • 将字符串拆分为单独的消息
  • 将一般消息和所有其他消息分开
  • 以相同的顺序排列预期和实际消息(例如按字母顺序)
  • 比较预期和实际消息的有序列表。现在它们的顺序相同,它们应该逐项相等
  • 检查一般消息是否在实际消息流中的所有其他消息之后。
于 2012-04-18T15:42:29.987 回答
2

你最好比较Set消息,因为你所追求的模糊字符串比较太棘手了......

于 2012-04-18T15:39:12.623 回答