Как исключить классы Dagger2 из тестового покрытия

Есть ли возможность исключить классы Dagger2 из отчета об охвате тестирования в Android Studio

JaCoCo исключает

Если вы используете JaCoCo, например, используя тесты с подключением к андроидному аппарату, вам необходимо настроить исключение (или включает), которое, согласно документации , …

Список файлов классов для исключения из отчета. Может использовать подстановочные знаки (* и?). Когда не указано, ничего не будет исключено.

Это означает, что вам нужно совместить созданные имена классов кинжалов. Следующие правила охватывают практически любой класс, созданный dagger-compiler , без соответствия никому из не сгенерированных классов (если вы не назовете свой класс так же, как кинжал …):

 excludes = [ '**/*_MembersInjector.class', '**/Dagger*Component.class', // covers component implementations '**/Dagger*Component$Builder.class', // covers component builders '**/*Module_*Factory.class' ] 

Вы можете проверить свои сгенерированные классы кинжалов в каталоге app/build/generated/source/apt после запуска сборки, чтобы узнать, есть ли какие-либо дополнительные сгенерированные классы, которые вы хотите сопоставить с исключениями.

Это исключает массив – это свойство конфигурации плагина jacoco. Теперь, когда это excludes массив, зависит от того, определяете ли вы свои собственные задачи на основе плагина jacoco или используете «плагин более высокого уровня», который делает это для вас. Например, используя этот плагин (вы можете увидеть источник плагина, чтобы увидеть, где фактически применяются исключения):

 jacocoAndroidUnitTestReport { excludes += [ '**/*_MembersInjector.class', '**/Dagger*Component.class', '**/Dagger*Component$Builder.class', '**/*Module_*Factory.class' ] } 

Связанные тесты

Если вы используете тестовое покрытие, связанное с подключением к Android, устанавливая testCoverageEnabled true в свой тип buildType , к сожалению, нет идиоматического способа объявить исключения , поскольку плагин android gradle не предоставляет таких параметров, а предопределенная задача отчета jacoco исключает жестко запрограммированную. В этом случае вы должны списать свою задачу с исключениями .


Тестер IntelliJ

Если вы используете тест-листы IntelliJ, независимо от того, выполняется ли покрытие с помощью IntelliJ или JaCoCo, вам нужно включить в него тестовую конфигурацию.

  1. Откройте окно « Редактировать конфигурации» :

Изменить настройки

  1. Выберите конфигурацию теста и определите, включает (классы или целые пакеты). В этом случае я включил весь пакет com.google.android.gms , как пример:

Тестовое покрытие включает

Чтобы исключить созданные кинжалом файлы, самый быстрый способ – установить все зависимости кинжала в один корневой пакет и включить все остальные пакеты в тестовую конфигурацию.