Мы работаем над приложением Spring-boot, в котором мы используем Maven для управления зависимостями.Мы разделили проект на несколько modules
как разные сервисы.
У меня есть некоторые сомнения и надеюсь получить некоторые идеи и ответы здесь.
<modules>
<module>app</module>
<module>core</module>
<module>firstlibrary</module>
<module>firstlibraryservice</module>
<module>secondlibrary</module>
<module>secondlibraryservice</module>
</modules>
app -> pom.xml
<dependencies>
<dependency>
<groupId>com.microservice</groupId>
<artifactId>core</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.microservice</groupId>
<artifactId>firstlibraryservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.microservice</groupId>
<artifactId>firstlibrary</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.microservice</groupId>
<artifactId>secondlibraryservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.microservice</groupId>
<artifactId>secondlibrary</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.1</version>
</dependency>
</dependencies>
Основное намерение расщепленияПроект по работе с отдельными модулями заключается в повышении отказоустойчивости и масштабируемости всей системы.Мы разделили систему на разные сервисы, для каждого сервиса у нас есть base module
, а также service module
.
Каждый базовый модуль может обращаться к другим службам в зависимости от своих потребностей с зависимостью maven, но ни одному базовому модулю не разрешен прямой доступ к другим базовым модулям.
Проблема, с которой мы столкнулись сейчас, заключается в том, что, когда мы исправляем ошибки или добавляем функции для одного модуля, мы вынуждены писать тесты для модуля приложения, который имеет доступ ко всем другим модулям, которые определены как зависимости в его pom
файл maven.
Я думаю, что здесь мы столкнулись с противоречием, поскольку основная причина использования микросервисной архитектуры заставляла нас разрабатывать и тестировать каждый модуль как можно более независимо от других модулей вместо написания наших тестов для всего приложения.level.
Прямо сейчас, поскольку каждый модуль имеет доступ только к модулям, которые находятся в его pom.xml
зависимостях, мы не можем очистить компиляцию каждого модуля или написать тесты на уровне модуля.
Мой вопрос как я могу запустить модульные тесты для каждого модуля на своем модуле вместо написания всех тестов на модуле app
?(который имеет доступ ко всем другим модулям)
Я надеюсь, что смогу получить некоторые ответы и предложения здесь.