Отображение результата QTestlib с подключаемым модулем Jenkins xUnit

Я пытаюсь использовать подключаемый модуль Jenkins xUnit для своего проекта модульного тестирования Qt, но не могу заставить его работать...

Вот что я сделал до сих пор:

Прежде всего, я создаю свой модульный тестовый проект с помощью подключаемого модуля qmakebuilder (предоставляя .pro подключаемому модулю qmakebuilder), затем я добавляю раздел сборки Execute Shell, где я сначала rm -f XML-файл testResult, после чего я запускаю тестовый двоичный файл с флагом -xunitxml, чтобы он сгенерировал для меня файл xml. И я называю файл xml testResult.xml, другими словами:

rm -f /home/guest/QT/unitTest/testResult.xml
cd /home/guest/QT/unitTest
./tst_unittesttest -xunitxml > testResult.xml

Наконец, в Post Build Action я выбираю Publish xUnit test result и указываю шаблон как *.xml.

Однако создание задания не удастся. Вот результат, который я получаю при создании задания с помощью Jenkins:

[xUnit] [INFO] - Starting to record.
[xUnit] [INFO] - Processing QTestlib-Version N/A
[xUnit] [INFO] - [QTestlib-Version N/A] - 1 test report file(s) were found with
the pattern '*.xml' relative to '/home/guest/QT/unitTest' for the testing framework
'QTestlib-Version N/A'.
[xUnit] [ERROR] - The converted file for the result file '/home/guest/QT/unitTest
/testResult.xml' (during conversion process for the metric 'QTestlib') is not
valid.
The report file has been skipped.
[xUnit] [ERROR] - The plugin hasn't been performed correctly: hudson.util.IOException2:
Failed to read /home/guest/QT/unitTest/generatedJUnitFiles/QTestlib/TEST--735044756.xml
Build step 'Publish xUnit test result report' changed build result to FAILURE
Build step 'Publish xUnit test result report' marked build as failure
Finished: FAILURE

Как вы можете видеть, есть проблема с преобразованием моего xml-файла результатов теста в то, что может прочитать подключаемый модуль xUnit. Мой файл testResult.xml выглядит так:

<?xml version="1.0" encoding="UTF-8" ?>
<testsuite errors="2" failures="0" tests="4" name="UnitTestTest">
  <properties>
    <property value="4.7.4" name="QTestVersion"/>
    <property value="4.7.4" name="QtVersion"/>
  </properties>
  <testcase result="pass" name="initTestCase">
    <!-- message="called before everything else" type="qdebug" -->
  </testcase>
  <testcase result="pass" name="myFirstTest"/>
  <testcase result="pass" name="mySecondTest"/>
  <testcase result="pass" name="cleanupTestCase">
    <!-- message="called after myFirstTest and mySecondTest" type="qdebug" -->
  </testcase>
  <system-err>
<![CDATA[called before everything else]]>
<![CDATA[called after myFirstTest and mySecondTest]]>
  </system-err>
</testsuite>

но TEST--735044756.xml представляет собой однострочный XML-файл: <?xml version="1.0" encoding="UTF-8"?>

Кто-нибудь знает, где я делаю что-то не так? Должна быть проблема с созданием выходного xml-файла.

С другой стороны, я добавил журнал в меню системного журнала Jenkins, хотя, похоже, это не является причиной этой проблемы ... по крайней мере, IMO


person mrz    schedule 12.11.2012    source источник


Ответы (1)


Выполнение тестового двоичного файла с флагом -xml будет работать нормально. Странным образом использование -xunitxml создает поврежденный XML-файл, в котором его <testcase> не имеет атрибута time. Запуск тестового двоичного файла только с -xml приводит к успешному построению задания.

person mrz    schedule 12.11.2012
comment
Я думаю, это зависит от формата, который вы выбираете в конфигурации плагина xUnit. Формат QTestLib-Version N/A (который был добавлен в версии 1.50 плагина) предполагает формат -xml QTestLib. - person Ignitor; 19.02.2015