7) Tests d'architecture

Avec toutes les découvertes réalisées jusqu'à présent on a pu se rendre compte que l'architecture désirée était une architecture en Onion :

Onion Architecture

On va s'assurer que le code actuel respecte le Design escompté :

Step 7 : Tests d'architecture

Pour aller plus vite, voici une classe contenant des extensions facilitant l'écriture et le lancement de tels tests :

Inward Dependencies

  • On va valider le sens des dépendances en ajoutant une nouvelle classe de tests

  • On définit les couches de notre onion :

Domain Model

On peut alors écrire une première règle pour notre Domain Model :

Celle-ci échoue :

Failing Arch Test

La classe Terrain se trouve dans l'Application Services alors qu'elle est une entité à part entière du Domain...

On corrige cela en déplaçant la classe :

Move class

Règle de l'Application Services

On en profite pour implémenter une règle sur l'Application Service :

Quid de l'infrastructure ?

Pour le moment nous n'avons qu'une interface de Repository (Un Port) au sein du namespace Infrastructure.

Est-ce que cela fait du sens au regard de la règle de dépendance ?

Nous allons déplacer ce port dans le Domain.

Nous pouvons tout de même implémenter une règle spécifiant que les items présents dans le namespace Repository doit implémenter l'interface IPartieDeChasseRepository :

Règles d'équipe

On peut ajouter certaines règles d'équipe du genre :

  • Toutes les interfaces doivent commencer par I

  • Une méthode commençant par Get doit retourner quelque chose

  • ...

Nouveau rapport SonarCloud disponible ici.

Reflect

  • A quoi cette technique pourrait vous servir ?

  • Quelles règles pourraient être utiles dans votre quotidien ?

Last updated

Was this helpful?