Я хочу получить покрытие кода при запуске модульных тестов.
Я запускаю ant coverage
, используя стандартный android build.xml для тестов.
Тесты проходят хорошо. Последние строки из ant coverage
:
Tests run: 59, Failures: 1, Errors: 4
Generated code coverage data to /data/data/my.package/files/coverage.ec
Но файл cover.ec имеет длину всего 37 байт и почти пуст.
Запуск отчета Эммы об этом говорит
no collected coverage data found in any of the data files [all reports will be empty]
и генерирует прекрасный отчет с НУЛЯМИ в каждом поле.
Полагаю, эмма должна генерировать большее покрытие .ec.
Что я делаю не так?
--- обновление ---
Глубоко копал. Кажется, что большинство вещей хорошо, кроме генерации результата покрытия.
1) компилирует все, говоря
[javac] /blabla/android-sdk-linux_x86/tools/ant/main_rules.xml:384: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 88 source files to /blabla/project/tests/instrumented/classes
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
2) Он делает <instr>
с mode="overwrite"
для проекта, который находится в стадии тестирования. Путь в порядке.
-emma-инструмент:
[echo] Инструментарий классов из /blabla/project/tests/instrumented/classes...
В результате получается файл * .em с метаданными для 98 классов.
3) Некоторая стандартная конвертация Android в dex, пакет в unaligned, выравнивание по zip. Результат - /blabla/project/tests/instrumented/project-debug.apk.
4) Установка этого проекта-debug.apk на эмулятор.
5) Составление тестового проекта.
компиляции:
[javac] /blabla/android-sdk/android-sdk-linux_x86/tools/ant/main_rules.xml:384: предупреждение: «includeantruntime» не установлено, по умолчанию build.sysclasspath = last; установить в false для повторяющихся сборок
[javac] Компиляция 110 исходных файлов в / blabla / project / tests / bin / classes
Исходные файлы включают все предыдущие файлы плюс тесты (110 = 88 + тесты), как указано в build.properties (несколько source.dir, разделенных ";").
6) Ресурсы, Dex, подпись, выравнивание по zip ... Результат - projectTest-debug.apk
7) Установка projectTest-debug.apk на эмулятор.
8) Проведение тестов до утра, где указано «покрытие на». Это говорит о том, что
[exec] Generated code coverage data to /data/data/blabla.project/files/coverage.ec
9). В этом файле cover.ec нет соответствующих данных. Это 37 байтов в длину. Отчет об этом говорит, что
processing input file [/home/ubuntu/projects/ppf2/workspace/PPF2/tests/coverage.ec] ...
loaded 0 coverage data entries
...
no collected coverage data found in any of the data files [all reports will be empty]
Мне кажется, все хорошо, кроме последнего шага.