Вот моя ситуация:упаковка jacoco-agent.properties в APK, чтобы ее можно было прочитать?
фон
- Я расследую код-покрытие для нашего Android приложения. Приложение построено с помощью Gradle и Android Studio.
- Мне нужны отчеты о покрытии кода в двух ситуациях: во время ручных тестов и во время автоматических тестов, построенных с помощью нашего обширного набора Appium.
- Мне нужно получить доказательство концепции быстро (разве это не всегда так?), Поэтому у меня не было возможности сделать тщательный R & D. Так что прошу простить любое незнание, которое я показываю:)
- У меня есть доступ к источнику приложения, но у меня мало знаний о движущихся частях.
- Я исследовал JaCoCo и Эмма. Этот вопрос относится к JaCoCo.
- Учитывая, что нам нужно покрытие для тестов Appium и ручных тестов, я считаю, что автономное оборудование с JaCoCo - это то, что мне нужно.
Progress Made
- Я использовал the JaCoCo plugin page и the Android Tools page и может настроить build.gradle правильно.
- Я проверил, что классы (присутствующие в
build\intermediates\classes
) оснащены инструментами JaCoCo и упакованы в APK. - Я написал BroadCastReceiver за this SO discussion, который получит широковещательную передачу "end coverage".
Проблема
Когда я запустить приложение вручную, я продолжаю видеть ошибки в LogCat W/System.err: java.io.FileNotFoundException: /jacoco.exec: открыть не удалось: EROFS (только для чтения файловой системы)
Из this SO question и the JaCoCo docs Я понимаю, что Jacoco должен знать, где хранить файл jacoco.exec
- и что мне нужно упаковать jacoco-agent.properties (содержащий destfile
свойство) с APK.
Я попытался положить jacoco-agent.properties в assets
- он был упакован в APK правильно, но, похоже, не имеют никакого эффекта (т.е. Jacoco не удалось, как обычно) я попытался положить его в res
- это не упакуйте в APK. Я пробовал res/raw
и ударил ошибку о тире в имени файла, как в this SO question.
Я нахожусь в конце своего ума и очень ценю помощь. Как мне упаковать jacoco-agent.properties, используя мою сборку Gradle в APK, чтобы JaCoCo прочитал ее?
Вопросы, относящиеся
this SO question, имеет ответ с 2013 года, и это для Ant, не Gradle.
Я редактировал ответ, так что может быть понятнее для новичков вроде меня :) Пожалуйста, дайте мне знать, если мой править правильно. – Vish
Спасибо за ответ; Я добавил код, но он, похоже, не помог. (Я распаковал APK и проверил, что jacoco-agent.properties не упакован). Моя build.gradle выглядит следующим образом: 'sourceSets { основные { manifest.srcFile 'AndroidManifest.xml' assets.srcDirs = [ 'активы'] java.srcDirs = [ ''] в исходные тексты res.srcDirs = [» res '] res.includes = [' **/jacoco-agent.properties '] } ' – Vish
@Vish, Ваше закрытие Я вижу, что вы указали' ... res.includes = [' **/jacoco-agent. properties '] '' 'res' указывает на android' Resources', а не на Plain Old Java, который включает 'resources.includes = [' **/jacoco-agent.properties ']' Обратите внимание на 'res' vs' resources' – JBirdVegas