Revenir sur sevenwonders

J’ai du mettre en pause le blog pendant 3 mois pour une mission qui demandait pas mal de temps de cerveau disponible et qui m’a beaucoup appris. Si j’avais donc à refaire sevenwonders, voilà ce qui changerait en gros:

  • utilisation de Spring Roo pour créer rapidement la partie web
  • faire plus attention aux modifieurs d’accès java (par défaut j’oublie de mettre des private partout où je peux) ou static ou final
  • utilisation de Guava pour faire des fonctions de filtrage avec les prédicats sur les cartes et utiliser les fonctions helpers sur les collections, la possibilité de marquer des champs en nullable, etc
  • Utilisation de testNg et son dataprovider fort utile qui permet de tester plein de cas de tests en mettant les données et résultats attendus dans des tableaux :
@Resource(name="listeMerveilles")
List<Merveille> listeMerveilles;

@DataProvider
  private Object[][] merveillesProvider() {
    Object[][] testMerveille = new Object[7][3];
    return new Object[][] {
        {listeMerveilles.get(0), 1, "The Colossus of Rhodes", Lists<Cout>.asList(new Cout(0, Ressource.Brique, Ressource.Brique), new Cout(0, Ressource.Minerai), new Cout(0, Ressource.Pierre), null)},
        {listeMerveilles.get(1), 2, "The Pyramids Face B", Lists<Cout>.asList(new Cout(0, Ressource.Brique, Ressource.Brique), new Cout(0, Ressource.Minerai), null, null)},
        // etc...
    };
  }
@Test(dataProvider = "merveillesProvider")
public void testCoutEtagesMerveilles(Merveille merveille, Integer id, List<Cout> couts) {
     assertEquals(merveille.getId(), id);
     for (int i = 0; i < couts.size()) {
          assertEquals(merveille.getCoutAge(i), couts.get(i));
     }
}

Ainsi on peut tester tous les coûts de toutes les merveilles plus efficacement et en séparant le test des données à tester.

Bref, à 4 mois d’écarts le projet aurait été différent… Je le reprendrai dans un futur indéterminé pour tester le dépot sur un cloudbees ou autre PaaS.

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s