В настоящее время я разрабатываю системную библиотеку Java, которая представляет собой прослойку между источником данных и бизнес-логикой пользователя. Чтобы протестировать его функциональность, поставщик данных (в моем случае это сетка данных) должен запускаться каждый раз при обработке нового теста.
поэтому, чтобы улучшить производительность выполнения теста, была создана тестовая инфраструктура. сделано в независимом модуле maven. Он запускает источник данных один раз, а потом просто очищает его содержимое для каждого нового теста.
Сама проблема:
Сейчас есть необходимость дать бизнесу разработчики логики нашей тестовой инфраструктуры по тем же причинам, связанным с производительностью. Но сделать это так просто невозможно, поскольку тестовая инфраструктура содержит некоторые системные компоненты нашей библиотеки.
Итак,
Предположим, у нас есть модуль A с реализацией вашей библиотеки и модуль B с некоторой тестовой инфраструктурой, которая содержит зависимости от этой реализации.
вопрос:Есть ли способ создать модуль C с доступом только к API из модуля A во время компиляции? (тесты и исходники) и можете ли использовать тестовую инфраструктуру из модуля B?
Менеджером сборки является
Maven 3.3. 3
Тест выполнен с использованием
JUnit 4.11
Java IDE это
IntelliJ IDEA
то, что я пробовал:< /strong>
Я пытался решить эту проблему, используя различные области Maven, например:
Зависимости pom модуля A:
Код: Выделить всё
my.group
moduleAAPI
Код: Выделить всё
my.group
moduleA
provided
Код: Выделить всё
my.group
moduleB
test
my.group
moduleAAPI
test
Другой возможный вариант — добавить зависимость времени выполнения от модуля A следующим образом:
Код: Выделить всё
my.group
moduleB
test
my.group
moduleAAPI
test
my.group
moduleA
runtime
Уже есть вопрос об альтернативной области действия:
Объявить зависимость Maven только как среду выполнения теста
p>
Есть ли альтернатива этим двум вариантам?
Подробнее здесь: https://stackoverflow.com/questions/392 ... ementation