Как автоматически создать отчет о тестировании Android в HTML - PullRequest
13 голосов
/ 01 февраля 2010

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

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

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

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

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

Ответы [ 3 ]

9 голосов
/ 07 апреля 2011

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

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

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

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

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

1 голос
/ 01 февраля 2010

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

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

0 голосов
/ 22 сентября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...