2010-06-25 4 views
12

У меня есть все более сложные таблицы стилей XSLT, и было бы полезно, если бы я мог выполнять некоторые тесты на них как часть моего процесса сборки CI и даже использовать TDD для их разработки в первую очередь. В настоящее время я использую Visual Studio для запуска фрагментов XML через таблицы стилей, и я вручную проверяю результаты.Как выполнить автоматическое тестирование таблиц стилей XSLT?

Что бы все рекомендовали для этого? В идеале было бы легко интегрироваться в CruiseControl.NET и/или MsBuild.

+0

Хороший вопрос (+1). См. Мой ответ для некоторых ссылок. –

ответ

2

Я думаю, что я бы написал для них единичные тесты на выбранном вами языке программирования (например, C#). Имейте коллекцию входных xmls и соответствующих ожидаемых результатов и просто запустите xsl на них и убедитесь, что они соответствуют выходам. Я не уверен, есть ли более умный способ проведения тестирования.

2

Если вы знакомы с Apache Cocoon, вы можете использовать CoUnit, который использует блок xslt под капотом.

Testcases выглядеть следующим образом:

<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> 
1

Я работаю над проектом, который использует XSL-T. У нас есть несколько тестов, управляемых данными, с визуальной студией. Я также считаю, что N-Unit имеет некоторые тестовые функции, основанные на данных.

5

Что я сделал, используется моя стандартная модульная система тестирования с хорошей библиотекой для тестирования вывода. В моем текущем проекте вывод XHTML, и я использую JUnit и xml-unit. В предыдущем проекте выход был XSL-FO, и я использовал python-unit и xmllib. Это позволяет мне постепенно наращивать XSLT (используя TDD), имея единственную проверку теста только на части вывода. Однако, если вывод является текстом, я могу сравнить весь результат. Я использовал свое текущее программное обеспечение для тестирования модулей по двум причинам. Во-первых, я был знаком с этим, поэтому было быстрее начать. Во-вторых, было очень легко автоматизировать тестирование с помощью сборки, если она уже использовала тип теста, который ожидала сборка.

Смежные вопросы