junitテストxmlドキュメントが任意の列でソートされているかどうか
質問
のようなXMLドキュメントが与えられます
<root>
<row>
<a>2</a>
<b>1</b>
<c>8</c>
</row>
<row>
<b>5</b>
<a>2</a>
<c>8</c>
</row>
<row>
<a>2</a>
<c>8</c>
<b>6</b>
</row>
</root>
XMLドキュメントがXMLunitの要素Bでソートされていると主張する簡単な方法はありますか
編集: 特定のノードのXMLタグの値が特定の順序である必要がある場合、変更できないソフトウェアに奇妙な問題があります。他の検証の前にこの一連のルールを実施するために、私のテストハーネスがそれを望んでいます。
解決
次の単純なxpath1.0式の値を使用します:
not(//b[. > following::b])
他のヒント
Xpathの選択に関するアサーションを構築できます。
おそらく最も簡単な方法はXpath式を使用することです /root/row/b
, 、リクエスト NODESET
結果タイプ、次に、各結果ノードからテキストをコピーして List
構造。そのリストのテキストは、 Arrays.asList()
方法(Javaを使用していると仮定しています)。
Xqueryを実行できる場合は、Xquery Assertion:
every $i in (1 to count ($x/row) - 1)
satisfies
let $j := $i + 1
return number($x/row[$i]/b) <= number($x/row[$j]/b)
ここで、$ xはドキュメントであり、行がbの昇順である場合、それ以外の場合は偽です
所属していません StackOverflow