1

安心して統合テストを設定しようとしています。私のテストケースの1つでは、GroovyのGPathを使用しているように見えるREST-assuredのXmlPathを使用してXMLファイルのいくつかのプロパティを検証する必要があります。

次の構造のXMLドキュメントがあります(IDは一意です)。

<rootelement>
    <someelement id="1234" type="a">
      <property key="hello" value="world" />
      <property key="name" value="a name" />
      <property key="status" value="new" />
      <child target="645823" type="a" />
      <child target="7482" type="b" />
      <child target="8942" type="c">
         <property key="pro" value="yes" />
      </child>
    </someelement>
    <someelement>
        ...
    </someelement>
<rootelement>

理想的には、someelement idが与えられた場合、そのプロパティのマップを取得したいと思います。つまり、与えられたsomeelement idが1234であると仮定して、次のようなマップを取得したいと思います {"hello": "world", "name": "a name", "status": "new"}。どうすればいいですか?XmlPathにgetMapメソッドがあることは知っていますが、どの式を使用する必要があるのか​​わかりませんでした。

プロパティをマップとして取得できない場合は、キーのリストと値のリストを取得することに満足します。繰り返しますが、どの式を使用する必要があるのか​​わかりません。私はそのようなことを試みました:

xmlPath.getList("**.find {it.@id = '1234'}.property.@key", String.class)

しかし、何も見つかりません。

4

1 に答える 1

1

Groovyでこれを行うことができます(xmlxmlを含む文字列であると仮定します)

def map = new XmlParser().parseText( xml )
                         .someelement
                         .find { it.@id == '1234' }
                         .property
                         .collectEntries { [ it.@key, it.@value ] }

assert map == [ hello:'world', name:'a name', status:'new' ]

安心して使用したことがないので、その方向ではあまり役に立ちません:-(

于 2013-01-31T14:00:13.560 に答える