В настоящее время я изучаю автоматическое тестирование GUI на Android и по какой-то причине мне нужен инструмент, который может генерировать отчет о покрытии кода от ручного тестирования , После долгих поисков я обнаружил, что Jacoco
и Emma
упоминают ручной подход на своем сайте. Но, к сожалению, в Интернете нет up-to-date-working example
.Как получить покрытие кода от ручного тестирования на Android-приложении (студия Android и градация)
Я пробовал много предлагающего решения, например, https://groups.google.com/forum/#!searchin/jacoco/manual $ 20android% 7Csort: date/jacoco/vx0g_6TKY8Q/0Tg3fX84CAAJ.
Он генерируется coverage.exec, но размер файла был только несколько байт (конечно, Jacoco не удалось создать ни одного отчета от него.)
Вот что я пробовал: https://github.com/kindraywind/MyDummy
В приложении /build.gradle
apply plugin: 'jacoco'
jacoco {
toolVersion ="0.7.8+" //I did try "0.7.4+" as the suggest.
}
task jacocoTestReport(type: JacocoReport) { … }
В jacoco-agent.properties
destfile=/storage/sdcard/coverage.exec
В приложение/SRC/главная/AndroidManifest.xml`
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
В MainActivity.java
protected void onStop()
{
super.onStop();
if(BuildConfig.DEBUG)
{
String TAG = "jacoco";
try {
String covPath = Environment.getExternalStorageDirectory().getPath() + "/coverage.exec";
File coverageFile = new File(covPath);
Class<?> emmaRTClass = Class.forName("com.vladium.emma.rt.RT");
Method dumpCoverageMethod = emmaRTClass.getMethod("dumpCoverageData",coverageFile.getClass(), boolean.class, boolean.class);
dumpCoverageMethod.invoke(null, coverageFile, true, false);
} catch (Exception e) {
}
}
}
Эмулятор Nexus 5 API 19 (я стараюсь большинство версий.)
Журнал с устройства EMMA: runtime cov Данные тить объединены в [/storage/sdcard/coverage.exec] {в 8 мс}
В журнале после запуска ./gradlew jacocoTestReport Unable to read execution data file /Users/MyDummy/app/coverage.exec
Я использую OSX10.12.3, если это связанно.
Подводя итог, мне нужно знать (или любой рабочий пример), как получить покрытие кода в то время как:
- Протестируйте приложение вручную.
- В приложении для Android.
- Который использует Gradle не Maven или Ant.
- Android Studio не Eclipse.
Я не вижу выхода и действительно ценю помощь.
В случае ссылки блога идти мертвым в будущем, было бы полезно, если бы вы предоставили краткое объяснение помочь будущим читателям с той же проблемой. Представьте свой ответ без ссылок и попробуйте добавить всю информацию, отсутствующую для успешного решения проблемы. – Adalee