2017-10-30 4 views
0

私は同じ修飾名を持つ2つの空の要素を比較したいです。自分が閉じていて、もう一つが閉じていない場合、要素を異なるものとしてマークするオプションを指定できるようにしたい。XMLUnit:自己閉包要素を非自己閉包要素と異なるものとして登録するにはどうすればよいですか?

final String control = "<a></a>"; 
final String test = "<a/>"; 
Diff myDiff = DiffBuilder.compare(Input.fromString(control)) 
    .withTest(Input.fromString(test)) 
    .build(); 
System.out.println(myDiff.toString()); 

これは、現在私が代わりにそれが違いを含めることができますどのように

[identical] 

を出力しますか?

私はComparisonType列挙型を探求してきたが、私が求めて比較のタイプに一致する値が含まれていないようです。

私は、Java 2.5.0のJava 8とXMLUnitを使用しています。

コンテキスト:私は、XMLをHTMLに変換するXSLT変換を持っているので、私はこれをしたい理由は、私はこのように、出力は自動閉鎖<div/> Sまたは<p/> Sが含まれていないことを保証するユニットテストを書いています有効なHTMLではありません。

答えて

2

あなたは、非常に単純な理由のためにすることはできません:2つの要素が異なるではありません。シリアライズされたフォームのみが異なり、XMLUnitは、XMLが正しいかどうか、シリアライズするかどうかは関係ありません。

+0

私は、XMLモデルによって、二つの要素が同一であることを理解します。それでも、正しいHTMLを生成していることを確認するためのテストが必要なことを考えると、XMLのStringシリアル化を直接比較することは難しいと思っていました。 –

+1

残念ながら、あなたはする必要があります。 XMLUnitはXMLパーサーを介してシリアル化されたフォームを実行し、要素の1つが自己終了していることさえ知りません。 - しかし、デザインは別々のこれら二つのものを維持することは非常に慎重であるだけでなく、XMLモデルに対してテストアサーション、これらはまた、シリアル化された出力に対してアサーションを許可する:私たちは明示的に許可W3C QT3とXSLT3テストスイートであること –

+0

は注意。そして、あなたが正しいです、シリアライズされた出力に対するテストは非常に暗くなる可能性があります:トリックは結果の小さな側面をテストすることです。 'serialization-matches(" /> ")'です。 –

関連する問題