1

1つの統合された文字列内のメッセージ(1行に1つのメッセージ)をチェックするJUnitテストを作成しています。形式は次のとおりです。

[*アリスへのメッセージ*]

ねえ、最初のメッセージ

2番目のメッセージ

[*ジムへのメッセージ*]

ホラー

そこにいる?

[*一般的なメッセージ*]

ようこそみなさん!

これはまた別のメッセージです。

問題は、私が受け取る実際の文字列の順序が変わる可能性があることです(常に文字列の最後に来る一般的なメッセージを除く)。例:あるとき、最初にJimのメッセージを取得できるので、assertEquals()を使用しようとすると、テストは失敗します。残念ながら、メッセージを生成するコードにアクセスできないため、変更を加えることができません。

これらの文字列を比較し、それらが同じであることを検証するための最良の方法は何ですか?

4

2 に答える 2

3

たとえば、次のように、テストを再編成して、任意の並べ替えに対処する必要があります。

  • 文字列を個々のメッセージに分割する
  • 一般メッセージとその他すべてのメッセージを分離する
  • 予想されるメッセージと実際のメッセージを同じ順序 (アルファベット順など) に並べます。
  • 予想されるメッセージと実際のメッセージの順序付きリストを比較します。同じ順序になったので、アイテムごとに等しくなるはずです
  • 一般メッセージが実際のメッセージ ストリーム内の他のすべてのメッセージの後に来ることを確認します。
于 2012-04-18T15:42:29.987 に答える
2

後のファジー文字列の比較はトリッキーすぎるため、複数のメッセージを比較することをお勧めしますSet...

于 2012-04-18T15:39:12.623 に答える