Différence entre la src/main/java et src/test/java dans un projet Maven
Lors de la création d'un nouveau projet Maven, les répertoires src/main/java et src/test/java sont créés. Avec quelques recherches sur Google, j'ai appris que mon code source principal que j'utilise pour les tests doit être placé dans src/main/java. Mais alors, quel est le but de deux répertoires distincts. La réponse actuelle à une question similaire n'a pas beaucoup aidé.
5 answers
Maven et d'autres environnements de gestion de build (par exemple gradle) sont basés sur l'hypothèse que vous effectuez des tests automatisés via, par exemple, des tests unitaires. Pour cela, vous avez besoin d'un code supplémentaire pour les tests qui ne devrait pas être inclus dans votre produit final livré à votre client.
Ainsi, tout ce qui entre dans src/main/java
est par défaut emballé dans le produit que vous livreriez à votre client alors que tout ce que vous mettez dans src/test/java
ne l'est pas.
Ceci est un avantage pour divers raisons:
- vos produits livrés sont plus petits
- il est plus facile de trouver du code testrelated dans votre projet
- vous pouvez charger différentes bibliothèques uniquement pour les tests.
- ...
La raison pour laquelle le code de test et le code de production (src/main/java
) sont séparés est qu'il est plus facile de construire l'application en incluant simplement le code de production.
src/main/java
place votre code qui utilise pour la production réelle.
src/test/java
place votre code de cas d'utilisation de test, comme junit test. Ces codes seraient exécutés lors de l'exécution des choses du package maven. Ces codes ne seront pas empaquetés dans votre fichier war ou jar. Ce qui signifie que ces codes ne seront pas pour la production réelle.
Plus: Les codes de test unitaires ne doivent pas être emballés en production. Vous n'avez pas besoin et ne devriez pas les mettre dans le dossier src/main/java
.
Selon les configurations Maven, la classe tests se trouve dans le répertoire src/test et le code source se trouve dans le répertoire src/main. Donc src/main/java est le répertoire racine de votre code source et src/test/java/ est le répertoire racine de votre code de test.
Ex : Forfait hôtel, Classe de réservation
Source Class file : src/main/java/Hotel/Reservation .java
Test Class file : src/test/java/Hotel/ReservationTest .java
Pour faciliter la recherche et l'utilisation des types, pour éviter les conflits de nommage et pour contrôler l'accès, les programmeurs regroupent des groupes de types associés dans des paquets.ici