следующий учебник https://proandroiddev.com/unified-code-coverage-for-android-revisited-44789c9b722f
после клонирования примера из того же учебника в его состоянии на сегодняшний день ( HEAD commit )
git clone https://github.com/rafaeltoledo/unified-code-coverage-android.git
cd unified-code-coverage-android
git checkout kotlin-coverage
добавление объекта-компаньона в MainActivity
class MainActivity : AppCompatActivity() {
+ companion object {
+ fun executed() {
+ }
+
+ fun notExecuted() {
+ }
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
+ executed()
запуск виртуального устройства Pixel XL
с API 28
и цель Android 9.0 (Google APIs)
в только что загруженном Android Studio 3.2.1
и исполнение
./gradlew jacocoTestReport
следующий отчет создается в каталоге app/build/reports/jacoco/jacocoTestReport/html/
, как и ожидалось
Учитывая количество факторов, которые влияют на результат (например, версии всех задействованных компонентов - Android SDK, Device, компилятор Kotlin, Gradle, JaCoCo и т. Д.), Попытки угадать, что отличается в вашем случае, являются контрпродуктивными для IMO, и так, что лучший совет - это провести очень тщательное сравнение различий между вашей настройкой и приведенным выше примером.
Обновление
Как выяснилось при сравнении @HeWhoProtects, проблема была в
исключение **/*$*
, что относится к исключению файлов классов из анализа. Один исходный файл может быть скомпилирован в несколько файлов классов, например, в случае вложенных классов в Java и точно в случае компаньона в Kotlin, и в обоих случаях имя класса и файл класса будут содержать $
.