[NEWS]AssertJ 3.6.X - Entretien avec Joel Costigliola

[NEWS] AssertJ 3.6.X - Entretien avec Joel Costigliola

1. introduction

AssertJ est une bibliothèque qui fournit des assertions fluides pour Java. Vous pouvez en savoir plus à ce sujethere ethere.

Récemment, la version 3.6.0 a été publiée avec deux petites versions de correctifs de bogues 3.6.1 et 3.6.2.

Aujourd'hui,Joel Costigliola - le créateur de la bibliothèque - est avec nous et vous en dira un peu plus sur la sortie et les projets futurs.

"Nous essayons de rendreAssertJ vraiment orienté vers la communauté"

2. Les versions 2.6.0 et 3.6.0 ont été publiées pratiquement au même moment. Quelle est la différence entre eux?

2.x versions target Java 7 while 3.x target Java 8. Une autre façon de voir cela est que 3.x = 2.x + Java 8 caractéristiques spécifiques.

3. Quels sont les changements / ajouts les plus notables apparus dans la version 3.6.0 / 2.6.0?

2.6.0 ended up having different small features but no big additions. Si je devais choisir, les plus intéressants seraient ceux liés aux exceptions supprimées: -hasSuppresedException() -hasNoSuppresedExceptions()

3.6.0 additionally got a way of checking multiples assertions on array/iterable/map entry elements:

4. Depuis la publication de la version 3.6.0, deux versions de correctifs sont apparues (3.6.1, 3.6.2). Pouvez-vous nous en dire un peu plus ce qui s'est passé là-bas et ce qui devait être corrigé?

Dans la version 3.6.1,filteredOn(Predicate) ne fonctionnait qu'avecList mais pas assez mal avecIterable,.

En 3.6.2, nous n’avions pas pensé à extraire les propriétés de la méthode d’obtention Java 8 par défaut, il s’avère que cela n’a pas fonctionné immédiatement après un refactoring interne.

J'ai demandé aux utilisateurs s'ils pouvaient attendre la prochaine version, le rapporteur de bogues m'a dit qu'il était prêt à attendre, mais un autre utilisateur le voulait, alors j'ai publié une nouvelle version. We are trying to make AssertJ really community-oriented, puisque couper une version est bon marché (enfin, sauf la partie documentation), je ne vois généralement pas de problème pour la publication.

5. Avez-vous rencontré des défis techniques intéressants en travaillant sur la dernière version?

Je signalerai un problème rencontré lors de la prochaine version 3.7.0 et qui devrait paraître dans quelques semaines.

Java 8 est pointilleux sur les signatures de méthode «ambiguës». Nous avons ajouté une nouvelle méthode assertThat qui prend unThrowingCallable (une classe simple qui est unCallable lançant une exception), il s'est avéré que Java 8 le confond avec une autre méthodeassertThat qui prend un Iterable!

Cela a été le plus surprenant pour moi, car je ne vois aucune ambiguïté entre les deux.

6. Envisagez-vous une nouvelle version majeure bientôt? Quelque chose qui utilisera les ajouts de Java 9?

Dans les prochaines semaines / un mois. We usually try to have releases every few months or when there are major additions.

Pascal Schumacher qui a rejoint l'équipe AssertJ a fait quelques travaux sur Java 9 pour vérifier la compatibilité, certaines choses ne fonctionnent pas, principalement celles qui reposent sur l'introspection puisque Java 9 change les règles d'accès. Ce que nous allons faire est de démarrer une branche 4.x qui sera axée sur Java 9, en suivant la même stratégie que 3.x vs 2.x, nous aurons des fonctionnalités 4.x = 3.x + Java 9.

Once 4.0 is officially released we will likely drop 2.x active development mais continuez à accepter les PR car nous n'avons pas la capacité de maintenir 3 versions synchronisées, je veux dire par là que nous signalons tout changement de la version nx à la version n + 1.x, donc en ajoutant quelque chose dans 2.x aurait besoin de rapporter à la fois dans 3.x et 4.x et c'est trop de travail pour le moment.