1

MySQLデータベースにアクセスするRESTサービスを作成しました。このサービスはまもなく、MongoDBデータベースを使用して新しいシステムに移植されます。後で、Oracleを使用して別のシステムに移植される場合があります。

なぜこれほど多くの移植を行っているのかは重要ではありません。

結果のXMLには、同じ名前のネストされたタグがいくつかあります。これは一般的なケースです。

サンプル:

<root>
    <level1>
        <name>Karl</name>
    </level1>
    <level1>
        <name>Anton</name>
    </level1>
    <level1>
        <name>Friedrich</name>
    </level1>
    <level1>
        <name>Anton</name>
    </level1>

</root>

私はSoapUIを使用してシステム間の結果をテストし、クエリなどが引き続き正しく機能していることを確認しています。統合テストなど。

つまり、XPathまたはXQueryで、「Karl」が結果に1回表示され、「Anton」が2回表示され、「Friedrich」が1回表示されることをテストする方法はありますか?通常は//root/ level1 [1] / name == "Karl"などをテストしますが、システム間の一貫した順序に依存することはできません。順序付けられていない結果をテストする方法はありますか?または、適切な数のlevel1要素が同じ名前の値を持っていることを確認する方法はありますか?機能があることは知っていcountますが、どれだけ精巧に使えるのかわかりません。

4

1 に答える 1

4

つまり、XPathまたはXQueryで、「Karl」が結果に1回表示され、「Anton」が2回表示され、「Friedrich」が1回表示されることをテストする方法はありますか?

使用

count(/*/level1/name[.='Karl']) = 1

count(/*/level1/name[.='Anton']) = 2

count(/*/level1/name[.='Friedrich']) = 1

これらは3つの別々のXPath式であり、それぞれがに評価される必要がありtrue()ます。

または、それらを組み合わせて、1回だけ評価できる単一のXPath式にすることもできます。

    count(/*/level1/name[.='Karl']) = 1
and
    count(/*/level1/name[.='Anton']) = 2
and
    count(/*/level1/name[.='Friedrich']) = 1
于 2012-11-21T01:41:56.247 に答える