30

XSLT変換の単体テストを作成する方法を知っている人はいますか?

XSLTファイルがたくさんあり、手動でテストするのが難しくなっています。XMLの例があり、XSL変換からの結果の出力XMLと比較できます。しかし、私はより良いテスト方法を探しています。

4

7 に答える 7

13

私は現在、これを行うためのいくつかの良いオプションを探しています。その結果、私はこの質問と他のいくつかの潜在的な解決策に出くわしました。確かに、私はまだそれらのどれも試したことがないので、それらの品質について話すことはできませんが、少なくともそれらは潜在的に研究する価値のある他のいくつかの手段です。

  1. JenniTennisonのユニットテストパッケージ
  2. UTF-Xユニットテストフレームワーク
  3. ジュクシー
  4. XTC

さらに、次の記事は、XSLTの単体テストの一般的な方法論に関して有益であることがわかりました。

ユニットテストXSL変換

于 2012-07-26T18:25:56.337 に答える
9

XSLT のテスト フレームワークであるXSpecを試してください。テストを宣言的に記述し、テンプレートと関数をテストできます。

于 2011-04-11T15:43:50.377 に答える
2

いくつかの簡単な解決策を次に示します。

  • モック XML ファイルで xsltproc を使用します。

    xsltproc test.xsl mock.xml
    
  • XSLT クックブック - 第 13 章

  • プレースホルダー変数を作成し、document()手動でコメント/コメント解除します。

    <xsl:variable name="Data" select="descendant-or-self::node()"/>
    <!-- 
    <xsl:variable name="Data" select="document('foo.xml')" />
    -->
    <xsl:if test="$Data/pagename='foo'">
      <p>hi</p>
    </xsl:if>
    
  • プログラムでコメントを交換する条件を作成します。

        <xsl:variable name="Data">
          <xsl:choose>
            <!-- If source XML is inline -->
            <xsl:when test="descendant-or-self::node()/pageName='foo'"/>
             <xsl:value-of select="descendant-or-self::node()"/>
            </xsl:when>
            <!-- If source XML is external -->
            <xsl:otherwise>
             <xsl:value-of select="document('foo.xml')" />
            </xsl:otherwise>
          </xsl:choose>
        </xsl:variable>              
    

シェル スクリプトを使用して、ビルドでプログラムによってデータをインライン化し、テストを完全に自動化します。

参考文献

于 2014-03-26T18:20:08.100 に答える
1

私はこのツールを使用しています: jxsltunit .

テストは、ツールに渡される XML ファイルによって定義されます。これは、テスト構成の例です。

<xsltTestsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="jxsltunit jxslttestsuite.xsd" xmlns="jxsltunit"
    description="Testsuite Test"
    xml="min-test.xml"
    xslt="min-test.xslt"
    path="pa > ch">
    <xsltTestcase match_number="0">
        <![CDATA[<ch>child 1</ch>]]>
    </xsltTestcase>
    <xsltTestcase match_number="1">
        <![CDATA[<ch>child 2</ch>]]>
    </xsltTestcase>
</xsltTestsuite>

XML、XSL、およびテストされる変換された XML 内のパスが必要です。パスには、要素がインデックスによって識別されるリストを含めることができます。

このツールの利点の 1 つは、結果を junit XML ファイルとして出力できることです。このファイルを Jenkins で取得して、テスト結果に XLST テストを表示できます。ツールへの呼び出しをビルド ステップとして追加するだけです。

于 2016-01-23T18:25:06.563 に答える
1

XSLT、XQuery、および Schematron の単体テストおよび動作駆動型開発 (BDD) フレームワークである Jenni Tennison の Unit Testing Package (XSpec) を試してください。これは、Ruby の BDD フレームワークである RSpec の Spec フレームワークに基づいています。

XSpec を使用すると、必要に応じて XLT テンプレートまたは XPath をテストできます。/handle/write (インストール|実行) の使用方法の概要については、https://github.com/xspec/xspec/wiki/What-is-XSpecをクリックしてください。

于 2018-11-12T06:39:41.400 に答える
1

Java ベースのユニット テスト ケースを使用してきました。このケースでは、変換後に予想される xml 文字列を提供し、XSL を使用して変換する必要がある入力 xml 文字列を提供します。さらに詳しく知りたい場合は、次のパッケージを参照してください。

org.custommonkey.xmlunit.Transform
org.custommonkey.xmlunit.Diff
org.custommonkey.xmlunit.DetailedDiff
于 2013-12-16T05:35:12.453 に答える