2017-05-10 1 views
-1

Mon projet ressembleSpring Boot Test: Est-ce une bonne idée d'avoir une classe Application par module?

myProject/ 
     /persistence/pom.xml 
     /persistence/src/main/java/PersistenceApplication.java 
     /persistence/src/main/java/**.java 

     /business/pom.xml 
     /business/src/main/java/BusinessApplication.java 
     /business/src/main/java/**.java 

     /api/pom.xml 
     /api/src/main/java/ApiApplication.java 
     /api/src/main/java/**.java 

api dépend de business et business dépend du module persistence. Lorsqu'il est exécuté en production, ApiApplication sera la classe principale.

Toutefois, lors de l'exécution des tests, je me sens obligé d'ajouter PeristenceApplication et BusinessApplication juste pour exécuter les tests de printemps annoté avec @SpringBootTest.

Est-ce vraiment une exigence? Je ne sais pas beaucoup sur Spring-Boot et j'aimerais savoir quelle est la recommandation ici?

Comment puis-je tester mes modules en utilisant @SpringBootTest mais sans nécessiter *Application.java en persistence et business?

Merci

+0

Aimez-vous avoir des tests unitaires normaux ou plus de tests d'intégration? – Patrick

+0

plus de tests unitaires – daydreamer

Répondre

1

je crois que le découplage par couche (horizontalement) est l'approche pas à jour d'il y a dix ans. Je crois que ce projet ne devrait pas être structuré "module par couche" ni "paquet par couche".

Il doit être structuré "paquet par caractéristique" ou "module par caractéristique" ou "microservice par caractéristique" (découplage vertical). Avec le découplage vertical, vous couvrirez dans le test d'intégration certaines fonctionnalités dans un paquet/module/microservice et votre attention serait naturellement partie.

+0

Pourriez-vous s'il vous plaît me guider vers des ressources à ce sujet? Aussi, même dans ce scénario, n'aurons-nous pas plusieurs 'Application'? ou dites-vous avoir seulement 1 module, intéressé par l'apprentissage de cette approche – daydreamer

+0

L'approche par défaut est d'avoir une seule classe de configuration 'Application' par unité déployable. Pour en savoir plus sur les approches «paquet par caractéristique» et «paquet par couche», il suffit de google pour cela. Mais ceux-ci ne seraient pas des ressources spécifiques à Spring, probablement – luboskrnac

+0

. Merci beaucoup – daydreamer