Я работаю в Visual Studio Team Services (теперь Azure DevOps). Я запускаю PHPUnit и экспортирую результаты тестов как JUnit для использования VSTS; однако я получаю сообщение об ошибке при попытке запустить задачу PublishTestResults с XML-файлом PHPUnit:
"##[warning]Invalid results file. Make sure the result format of the file '/home/vsts/work/1/s/styled-results.xml' matches 'JUnit' test results format."
Итак, после долгого исследования проблемы я нашел еще одного человека, который пытался опубликовать файл JUnit, созданный PHPUnit, в VSTS здесь. Оказывается, они просто не поддерживают вывод PHPUnit. Участник сообщества опубликовал эту суть файла XSL для преобразования XML в формат, понятный VSTS (Azure DevOps).
Создатель gist упомянул, что он использовал saxonb в задаче сценария на VSTS для обработки XSLT. Понятия не имею, как запустить saxonb на VSTS. Я не знаю имени вызываемого исполняемого файла, параметров и т. д. Я пробовал документы Saxon, но, похоже, не могу заставить это работать с агентом сборки VSTS Ubuntu 16.04.
Следует также отметить, что я безуспешно пробовал выполнение XSL-преобразования через PowerShell.
Понятия не имею, почему вы спрашиваете о древнем Saxon-B, он доступен на sourceforge.net/projects/saxon/files/Saxon-B, документация по ссылке для скачивания с saxon.sourceforge.net.
Я уже упоминал, что запускаю это на агенте сборки Ubuntu 16.04 выше. Я спрашиваю о Saxon-B, потому что это то, что OP исправления сказал, что он использовал, до 8 утра я понятия не имел, что такое Saxon. В настоящее время я пытаюсь запустить JAR-файл Saxon 9 HE на моем агенте сборки, добавив JAR в свое репо. Спасибо за помощь и ссылки.
Да, я видел это с Ubuntu, но, поскольку вы также упомянули PowerShell, я не был уверен и до сих пор не уверен, доступны ли инструменты Windows или платформа .NET. Но я думаю, что подойдет версия Saxon для Java.
Да, PowerShell доступен, поскольку я использую агент сборки, размещенный на сервере Microsoft. В итоге я заставил все работать, добавив банку в свой репозиторий и выполнив эту банку после запуска тестов. После этого я выгружаю весь каталог, содержащий банку и результаты тестов, чтобы они не попадали в продакшн.
Вы можете загрузить Java-версию Saxon 9 HE как JAR и запустить этот JAR в VSTS (Azure DevOps). Я использую размещенный агент сборки Ubuntu 16.04 (который поставляется с уже установленными Java, PHP и т. д.).
Я выполнил банку, просто выполнив двоичный файл java и передав свой JAR в том же месте, что и мои файлы XML и XSL:
java -jar saxon9he.jar -xsl:phpunit_to_junit.xsl -s:test-results.xml
Это сгенерировало папку, содержащую мои тесты, должным образом отформатированные для использования VSTS (Azure DevOps). Ваша настройка будет отличаться, так как все мои тесты имеют '-Test.xml', проверьте параметр testResultsFiles.
Я настроил свои тесты для вывода с помощью '-Test.xml', изменив следующую строку в XSL.
<xsl:variable name = "filename" select = "concat('TEST-',@name,'-Test.xml')" />
Следующим шагом была публикация моих тестов с помощью задачи PublishTestResults. Это то, что содержится в моем YAML-файле для публикации результатов.
- task: PublishTestResults@2
displayName: 'Publish test results'
inputs:
testRunner: 'JUnit'
testResultsFiles: '**/*-Test.xml'
searchFolder: '$(System.DefaultWorkingDirectory)'
mergeTestResults: false
Вы можете Примите это как ответ, это может быть полезно для других членов сообщества, читающих эту ветку.
Для примера вы можете увидеть это здесь: github.com/Microsoft/azure-pipelines-tasks/issues/8305
Итак, что это за ОС, к которой у вас есть доступ для запуска Saxon, это система Windows с .NET framework 4 или новее? Затем вы можете установить .NET-версию Saxon 9.8 HE из sourceforge.net/projects/saxon/files/Saxon-HE/9.8 и запустить ее, как описано в документации (
Transform -s:input.xml -xsl:sheet.xsl
) в saxonica.com/html/documentation/using-xsl/commandline. Если у вас установлена Java или вы можете ее установить, вы можете использовать версию Saxon 9.8 HE для Java.