Как автоматически генерировать отчет для тестирования 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.