Java 8: Collections, Stream et opérations IO par l’exemple. Déboguer les streams

 

Ce billet aborde par la pratique le nouveau design pattern de gestion des collections en java 8 : Stream.

En java 8, le design iterator est abandonné au profit d'une meilleure conception basée sur le Stream.

Nous pouvons dire brièvement, qu'en java 8, la programmation impérative est remplacée par la programmation déclarative (penser au langage  SQL).

Les exemples démos choisis sont des opérations sur les répertoires et fichiers avec des assertions sur le nombre de lignes et sur les contenus de ces fichiers.

Nous donnons aussi une manière de déboguer les streams.

Voici les ingrédients utilisés dans ce blog: Java 8, Stream, l'api AsssertJ pour le test Junit.

Devoxx France 2013 – Simplifiez vos tests avec les assertions AssertJ !

Parmi les quickies de Devoxx France 2013, j'ai assisté à la présentation intitulée « Simplifiez vos tests avec les assertions AssertJ ! » présentée par Joel Costigliola (compte github).

Joel était contributeur du projet FEST Assertions, dont la prochaine version contiendra moins d'assertions. Pensant qu'il faut au contraire rajouter plus d'assertions, il a fait un fork du projet sous le nom AssertJ.

Les principaux modules d'AssertJ sont :

De plus, un outil en ligne de commande permet de créer des assertions spécifiques au métier de l'utilisateur. Celui-ci s'intègre aux outils existants à l'aide d'un plugin maven et d'un plugin eclipse (prévu pour avril). Du code est généré à partir du code source des classes métier.

Exemple

Avec la classe suivante :


public class Person {

private String name;

}

On obtient du code permettant d'écrire l'assertion :

assertThat(person).hasName("pierre");

En plus du code généré, l'outil crée la javadoc et documente l'implémentation des méthodes.