Исключая банки через Gradle в юнит-тестах - PullRequest
0 голосов
/ 13 октября 2018

Я включаю некоторые локально созданные библиотеки из другого проекта, используя fileTree():

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    ...
}

Для модульного тестирования я хочу использовать свои собственные классы-макеты вместо этих jar-файлов.Как я могу testImplementation настроить , а не использовать эти файлы JAR и вместо этого использовать классы с аналогичными именами из моей исходной иерархии?

1 Ответ

0 голосов
/ 24 октября 2018

По умолчанию конфигурация testImplementation расширяется от implementation one , поэтому каждая зависимость, добавленная к implementation, будет присутствовать в testImplementation.

Так что лучший вариант -чтобы объявить эти конкретные зависимости в другой конфигурации, назовем ее extraDeps, которую вы затем добавите в compileClasspath конфигурацию:

configurations {
    extraDeps
    compileClasspath.extendsFrom(extraDeps)
}

dependencies {
    extraDeps fileTree(dir: 'libs', include: ['*.jar'])
}

Это дает вам следующие преимущества:

  • Общие зависимости между компиляцией и тестом все еще могут быть в implementation
  • Специальные зависимости четко определены, поскольку они находятся в их собственной конфигурации
  • Путь к классам компиляции видит все, что ему нужно
  • Тест classpath не видит специальные банки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...