xmlunitというxml照合用ライブラリを用いたjavaプログラムを作成しています。
XMLの照合を行い、差分がある場合は以下のようなString(の、不一致数分を含むリスト)を返します。
Expected text value 'TEST' but was 'TETS' comparing <TEST-TAG ...>TEST</TEST-TAG> at /TEST[1]/TEST-TAG[1]/text()[1] to <TEST-TAG ...>TETS</TEST-TAG> at /TEST[1]/TEST-TAG[1]/text()[1] (DIFFERENT) ※視認性のため改行を手追加しています
この(デフォルトの)出力形式だと問題がある(※)ため、出力フォーマットを指定して出力をしたいです。
※例えば、区切り位置取得のため" to "を使ってindexOfした場合に、比較対象の文字列の中に" to "が入っている場合、誤った区切り位置を取得してしまう
公式ドキュメント(英語)を読む感じ、おそらくwithComparisonFormatterというオプションの設定の仕方をすればよい、と理解しております。
そこには、こうあります。(これだけ)
が、この実装がうまくできておりません。
(具体例などがどこかに載っていれば応用できるのですが…英語でもおそらくないため…質問させて頂いた次第です。)
現状、以下のようなコードでは、エラーがでないこと(オプションの指定仕方が問題ないこと)まで確認できています。
Diff diff = DiffBuilder .~(省略) .withComparisonFormatter(null) .build(); …この場合、withComparisonFormatter(null)でnull指定(→デフォルト適用)となっています。ここのnullの箇所を適切に書きたいです。
前掲画像にある
withComparisonFormatter(ComparisonFormatter formatter)
は、ComparisonFormatterというインターフェースの、クラスを作成すればよいのだと理解のうえ、以下のような書き方でいろいろ試しているのですが、(eclipse上で、自動で出してくれる)エラーが解消しておりません。
Diff diff = DiffBuilder .~(省略) .withComparisonFormatter(~ implements ComparisonFormatter -> { try ~ }) .build();
(※前提理解として、具体的記載箇所がズレている場合は、
それはそれでご教示願いたいです。。合っている前提で、)
~の部分をどう書けばよいのか、正しいものがわかっていない現状です。
以上、情報に不足等ありましたら、その旨ご教示ください。よろしくお願いします。
★追記
以下であればエラーは発生しないところまで行けました。2020/11/16 21:00時点、別クラスのreturn値の設定仕方がわからず、試行錯誤中です
Diff diff = DiffBuilder .~(省略) .withComparisonFormatter(new ShowDiffComparisonFormatter()) .build();
public class ShowDiffComparisonFormatter implements ComparisonFormatter { public String getDescription(Comparison difference) { // TODO Auto-generated method stub return null; } public String getDetails(Detail details, ComparisonType type, boolean formatXml) { // TODO Auto-generated method stub return null; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/18 02:25