Подтвердить что ты не робот

Как использовать покрытие кода EMMA в android

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

4b9b3361

Ответ 1

Мне удалось получить работу emma с помощью ant. Если у вас установлена ​​сборка ant, вы можете запустить:

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>

Ответ 2

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

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

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

Ответ 3

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

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

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