Как использовать покрытие кода EMMA в Android - PullRequest
23 голосов
/ 04 мая 2010

Я новичок в EMMA, я не знаю, как использовать это для системы Android. Может кто-нибудь, пожалуйста, дайте образец для использования этого с Android. Большое спасибо.

Ответы [ 3 ]

9 голосов
/ 17 декабря 2011

Мне удалось заставить Эмму работать, используя муравья. Если вы настроили сборку муравья, вы можете запустить:

ant emma debug install
ant emma debug install test

Первый выполняется в каталоге вашего проекта, второй - из вашего тестового каталога. См. Документы для более подробной информации: http://developer.android.com/guide/developing/building/building-cmdline.html

Если у вас еще нет файла ant build.xml, вы можете посмотреть, как его сгенерировать из текущего проекта: http://developer.android.com/guide/developing/projects/projects-cmdline.html

Грустная часть в том, что это будет работать только на эмуляторе или на корневом устройстве. Это связано с тем, что файл покрытия создается в папке, требующей root. Мне также нужно было изменить файл android-sdk / tools / ant / build.xml, чтобы скопировать файл на мое корневое устройство в другом месте, чтобы я мог его снять. Я изменил блок emma xml следующим образом:

    <if condition="${emma.enabled}">
        <then>
            <echo>WARNING: Code Coverage is currently only supported on the emulator and rooted devices.</echo>
            <run-tests-helper emma.enabled="true">
                <extra-instrument-args>
                    <arg value="-e" />
                       <arg value="coverageFile" />
                       <arg value="${emma.dump.file}" />
                </extra-instrument-args>
            </run-tests-helper>
            <echo>Copying coverage to readable directory...</echo>
            <exec executable="${adb}" failonerror="true">
                <arg line="${adb.device.arg}" />
                <arg value="shell" />
                <arg value="echo cp ${emma.dump.file} /sdcard/coverage.ec | su" />
            </exec>
            <echo>Downloading coverage file into project directory...</echo>
            <exec executable="${adb}" failonerror="true">
                <arg line="${adb.device.arg}" />
                <arg value="pull" />
                <arg value="/sdcard/coverage.ec" />
                <arg value="coverage.ec" />
            </exec>
            <echo>Extracting coverage report...</echo>
            <emma>
                <report sourcepath="${tested.project.absolute.dir}/${source.dir}"
                                  verbosity="${verbosity}">
                    <!-- TODO: report.dir or something like should be introduced if necessary -->
                    <infileset dir=".">
                        <include name="coverage.ec" />
                        <include name="coverage.em" />
                    </infileset>
                    <!-- TODO: reports in other, indicated by user formats -->
                    <html outfile="coverage.html" />
               </report>
            </emma>
            <echo>Cleaning up temporary files...</echo>
            <delete file="coverage.ec" />
            <delete file="coverage.em" />
            <echo>Saving the report file in ${basedir}/coverage/coverage.html</echo>
        </then>
        <else>
            <run-tests-helper />
        </else>
    </if>
8 голосов
/ 07 августа 2010

Очевидно, что EMMA пока не поддерживается для SDK. Он поддерживается только для приложений и тестов, которые являются частью дерева исходных текстов. Что кажется странным, потому что они не упоминают об этом в руководстве разработчика, где они рассказывают вам о параметрах инструментовки EMMA. http://developer.android.com/guide/developing/testing/testing_otheride.html#AMOptionsSyntax

Вы можете прочитать ответ этого парня (который, кажется, входит в команду разработчиков? Я не знаю) http://groups.google.com/group/android-developers/msg/a542afd318832371

Если вы хотите скачать и собрать Android Source, звучит вполне разумно, чтобы EMMA работала для вашего собственного приложения. Тем не менее, это звучит немного сложно и, возможно, немного нестабильно. Смотрите полную тему для получения дополнительной информации: http://groups.google.com/group/android-developers/browse_thread/thread/43cf8a8ca5662f85/9b68eec3e7b625f3?lnk=gst&q=Emma#

1 голос
/ 23 мая 2012

Если вы используете maven для вашего проекта довольно просто с корневыми устройствами проверить эту вики:

http://code.google.com/p/maven-android-plugin/wiki/EmmaMaven

было легко реализовать решение, кроме генерации отчетов но если вы проверите комментарии в вики, вы найдете решение

...