Совместное использование тестовых классов между модулями - PullRequest
0 голосов
/ 23 мая 2018

Я хотел бы иметь возможность иметь общий тестовый код в модуле библиотеки моих проектов Android, чтобы их могли использовать различные приложения в проекте.

Проблема в том, что приложения не могут импортировать классы из<library>/src/androidTest/java, и если я перенесу этот код в src\main, ему придется переместить зависимости с androidTestCompile на compile (больше зависимостей от сборки выпуска).

Единственное решение прямо сейчасзаключается в создании отдельной библиотеки для хранения общих тестовых классов, однако недостатком этого является добавление новой библиотеки в структуру проекта, что не так уж и сложно, но, тем не менее, я хотел бы знать, есть ли лучшие решения.

Я бы предпочел реализовать хак с Gradle на этом этапе, если какой-либо мастер Gradle (плагин Android) может помочь мне найти его.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Если у вас есть код (тестовый или другой), который можно повторно использовать в нескольких модулях, вам нужно сделать именно то, что вы сделали: поместите его в его собственный модуль и импортируйте в другие модули.

Небольшие затраты на создание нового модуля дают вам много энергии.Он позволяет вам управлять его сборкой без необходимости изменения сборки каждого зависимого модуля.

Любой другой вариант, который я пробовал (создание отдельного модуля, содержащего тесты всех модулей, например), в конечном итоге становится гораздо большей головной больюи кошмар зависимости.

0 голосов
/ 07 июля 2018

Поскольку я не получил ответов, я мог бы также ответить на свой собственный вопрос.

В итоге я использовал решение, которое я уже упоминал в своем вопросе:

Создать библиотеку с общими тестовыми классами(не фактические тестовые случаи, но общий код, который будет использоваться в последних) в src / main и импортируйте его с androidTestCompile или androidTestImplementation для последних версий Gradle.

Получил решение, которое невключать добавление модуля?Я не приму мой собственный ответ, поскольку он не совсем отвечает на вопрос.

...