6) Définir des propriétés

Avant de nous lancer dans notre refactoring, on peut encore aller plus loin sur nos tests afin d'améliorer encore notre confiance vis-à-vis de notre code base.

Pour ce faire on va écrire des tests de propriétés :

  • Prendre du temps pour comprendre ce qu'est le Property-Based Testing

  • Quelles propriétés peut-on identifier à partir de notre Example Mapping ?

  • Ecrire des tests de propriétés en utilisant la librairie FsCheck

Step 6 : Définir des propriétés

Démarrer une partie

Démarrer une nouvelle partie de chasse

On peut identifier des propriétés telles que :

Ou encore :

Cas passant

  • On commence par ajouter la dépendance sur FsCheck

  • On ajoute 1 test dans la classe DemarrerUnePartieDeChasse

  • On doit travailler sur la génération d'un terrain valide

  • Ensuite, on travaille sur la manière de générer des chasseurs valides

  • On définit comment construire 1 groupe de chasseurs :

  • On utilise les générateurs dans la propriété

  • On lance le test et vérifie les inputs générés

Input generation
  • On a alors 1 seul test qui va en fait valoir l'écriture de 100 tests

Pour ce test on a alors :

Cette propriété est complémentaire au test DemarrerUnePartieDeChasse.AvecPlusieursChasseurs qui valide la bonne instantiation de l'objet PartieDeChasse à partir d'un exemple.

Dans la propriété, on valide que la partie démarre sans se soucier de l'instantiation de la partie au sens du Domain.

Cas non passant

Concernant les cas non-passants, nous allons les remplacer par des tests de propriétés.

  • On commence par ce test :

  • On le change en Property

  • On crée une méthode qui va lancer l'action de manière safe et valider la lancement de l'exception

Autres propriétés

D'autres propriétés pourraient être définies sur d'autres classes de tests.

Nouveau rapport SonarCloud disponible ici.

Reflect

  • Que pensez vous de cette technique ?

  • Quelles sont ses avantages ?

  • Comment vous pourriez l'utiliser ?

Last updated

Was this helpful?