Как автоматически генерировать отчет для тестирования Android в HTML

Я хотел бы автоматически генерировать отчет о единичном тестировании в формате html для приложения Android на сервере непрерывной интеграции Hudson.

Поэтому я сначала пытаюсь запустить тестовые примеры и собрать файлы результатов теста в формате xml. Затем я использую JUnitReport Task для преобразования файлов результатов XML в формат HTML.

Я запускаю тестовые примеры через платформу Android. Тем не менее, он предоставляет только исчерпывающую информацию о выходе, а не стандартный формат JUnit XML. Я не знаю, как создать HTML unit test отчет без файлов результатов JUnit XML.

Если я запускаю тестовые примеры с использованием Eclipse, он может экспортировать результаты в файлы XML с расходованной информацией за каждый тестовый пример. Эти XML файлы могут быть правильно преобразованы в HTML по JUnitReport Task. В результате, кажется, что можно собрать результат теста с потребляемой временем информацией.

Есть ли способ получить стандартный файл результата JUnit XML после запуска тестовых примеров на платформе Android-инструментов?

Ответы

Ответ 1

У нас была аналогичная проблема в нашей компании. Мы проверили все доступные решения с открытым исходным кодом, и ни один из них не был действительно совершенным. Таким образом, мы разработали и только открыли для него решение. Я до сих пор не говорю "окончательный", но, безусловно, намного лучше, чем либо athena, либо репортер python, либо любой последующий анализ. Вы можете найти это здесь: http://code.google.com/p/the-missing-android-xml-junit-test-runner/

Он обеспечивает:

  • отдельный XML файл для каждого пакета.
  • XML файлы создаются на устройстве (необходимо выполнить команду adb pull после тестирования)
  • время тестирования полностью поддерживается.
  • у нас есть полная трассировка стека в случае сбоя/ошибки

Вместо анализа исходного кода java (как в athena) или анализа вывода (python script) мы расширили программный ряд для андроидов. Таким образом, мы получаем все преимущества использования стандартных параметров командной строки для выбора теста, включения покрытия и т.д. - все описано здесь: http://developer.android.com/guide/developing/testing/testing_otheride.html#RunTestsCommand.

Мы смогли успешно запустить код, используя стандартные правила тестирования с охватом, проанализированным emma, все хорошо сообщается в Jenkins.

Ответ 2

Я только что увидел, что Дэн Уотлинг из DroidDudes работает с инструментом Athena, который кажется похожим на то, что вы хотите.

Вы можете найти его там: http://droiddudes.com/

Ответ 3

Я не думаю, что это возможно, поэтому вам нужно создать утилиту, которая преобразует выход тестового бегуна Android в файлы XML в формате JUnit.

Однако вы не сможете получить значение времени за тест, так как бегун для тестирования Android не выводит эту информацию.

Ответ 4

Я думаю, что подход athena является самым болезненным, поскольку вы можете просто установить файл athena jar в своей системе и добавить следующий ant target

<property name="junit.dir" value="${basedir}/junit-results"/>
<property name="athena.jar" value="/home/cruise/athena/athena-1.1.2.jar"/>

<target name="prepare" description="Setup needed directories">
  <mkdir dir="${junit.dir}"/>
</target>

<!-- This target will compile/install tested project as well as test project to ensure tests are executed against latest code -->
<target name="athena" depends="prepare, -install-tested-project, install" description="Run tests and convert result to xml using athena">
  <exec executable="java" os="Linux" failonerror="true">
    <arg value="-cp"/>
    <arg value="${athena.jar}"/>
    <arg value="com.synaptik.athena.Athena"/>
    <arg value="${basedir}"/>
    <arg value="${junit.dir}/TEST-result.xml"/>
  </exec>
</target>

Из командной строки это просто вопрос запуска ant athena, и у вас есть результат теста в xml. Это также станет целью, к которой должен срабатывать CruiseControl script.