Запустите тесты для библиотечного проекта с различными наборами зависимостей - PullRequest
0 голосов
/ 23 ноября 2018

Среда:

  • Java 8
  • Gradle 4
  • JUnit 5

У меня есть библиотечный проект, который поддерживает несколько установок/ Необязательные зависимости.

Для библиотеки всегда требуется Spring Boot + grpc-java.Однако пользователь библиотеки может решить, хочет ли он использовать netty или netty-shaded.И, наконец, библиотека добавляет дополнительные функции, если присутствуют Spring-Security и / или Spring-Cloud.

У меня есть набор тестов, который выполняется с настройкой по умолчанию (netty + Spring-Security).Как проверить, что я могу также использовать все функции из библиотеки с другими комбинациями настроек, не копируя свои тесты несколько раз?

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

Возможные решения

  • Создайте проект тестовой библиотеки, содержащий тестовый код, и создайте несколько тестовых проектов, которые выполняют тесты из этой библиотеки.

Не все тесты работают для всех установок.(Тест безопасности, очевидно, не пройдёт, если нет библиотеки безопасности).К сожалению, количество тестовых проектов может легко взорваться.В настоящее время для проверки всех возможных комбинаций требуется ~ 8 проектов.Если я добавлю еще одну необязательную зависимость (которую я собираюсь сделать), это увеличится до 16. Если нет ничего проще, я, вероятно, воспользуюсь этой.

  • Скопируйте зависимости в определенную папку и используйтенекоторый код для динамического добавления их в загрузчик классов.

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

TLDR: Существует ли простой способ запуска тестов JUnit 5 с различными наборами зависимостей с использованием gradle?

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