Как выполнить автоматическое тестирование таблиц стилей XSLT?
У меня есть все более сложные таблицы стилей XSLT, и было бы полезно, если бы я мог запускать некоторые тесты на них как часть моего процесса сборки CI и даже использовать TDD для их разработки в первую очередь. В настоящее время я использую Visual Studio для запуска фрагментов XML через таблицы стилей, и я вручную проверяю результаты.
Что бы все рекомендовали для этого? В идеале было бы легко интегрироваться в CruiseControl.NET и/или MsBuild.
Ответы
Ответ 1
То, что я сделал, используется моей стандартной модульной системой тестирования с хорошей библиотекой для тестирования вывода. В моем текущем проекте вывод XHTML, и я использую JUnit и xml-unit. В предыдущем проекте выход был XSL-FO, и я использовал python-unit и xmllib. Это позволяет мне постепенно наращивать XSLT (используя TDD), имея единственную проверку теста только на части вывода. Однако, если вывод является текстом, я могу сравнить весь результат. Я использовал свое текущее программное обеспечение для тестирования модулей по двум причинам. Во-первых, я был знаком с этим, поэтому было быстрее начать. Во-вторых, было очень легко автоматизировать тестирование с помощью сборки, если она уже использовала тип теста, который ожидала сборка.
Ответ 2
Я думаю, что я бы написал для них единичные тесты на выбранном вами языке программирования (например, С#). Имейте коллекцию входных xmls и соответствующих ожидаемых результатов и просто запустите xsl на них и убедитесь, что они соответствуют выходам. Я не уверен, есть ли более умный способ проведения тестирования.
Ответ 3
См:
http://www.jenitennison.com/xslt/utilities/unit-testing/
и
http://nwalsh.com/docs/presentations/xml2005/slides.pdf
и
http://www.fgeorges.org/xslt/xslt-unit/
Ответ 4
Если вы знакомы с Apache Cocoon, вы можете использовать CoUnit, который использует блок xslt под капотом.
Тесты выглядят следующим образом:
<testcase id="03-reverse" ignore-whitespace="true">
<input>
<text-to-reverse>
The text in this element
<embedded-element/>
will be reversed.
</text-to-reverse>
</input>
<expect>
<text-to-reverse>
tnemele siht ni txet ehT
<embedded-element/>
.desrever eb lliw
</text-to-reverse>
</expect>
<xslt src="reverse.xsl"/>
</testcase>
Ответ 5
Я работаю над проектом, который использует XSL-T. У нас есть несколько тестов, управляемых данными, с визуальной студией. Я также считаю, что N-Unit имеет некоторые тестовые функции, основанные на данных.