[NEWS]AssertJ 3.6.X - Interview mit Joel Costigliola

[NEWS] AssertJ 3.6.X - Interview mit Joel Costigliola

1. Einführung

AssertJ ist eine Bibliothek, die fließende Zusicherungen für Java bereitstellt. Sie können mehr darüber lesenhere undhere.

Vor kurzem wurde die Version 3.6.0 zusammen mit zwei kleinen Bugfix-Versionen 3.6.1 und 3.6.2 veröffentlicht.

Heute istJoel Costigliola - der Schöpfer der Bibliothek - bei uns und wird Ihnen ein wenig mehr über die Veröffentlichung und zukünftige Pläne erzählen.

„Wir versuchen,AssertJ wirklich gemeinschaftsorientiert zu machen“

2. Die Versionen 2.6.0 und 3.6.0 wurden ziemlich zeitgleich veröffentlicht. Was ist der Unterschied zwischen ihnen?

2.x versions target Java 7 while 3.x target Java 8. Eine andere Sichtweise ist, dass 3.x = 2.x + Java 8-spezifische Funktionen sind.

3. Was sind die bemerkenswertesten Änderungen / Ergänzungen, die in 3.6.0 / 2.6.0 aufgetreten sind?

2.6.0 ended up having different small features but no big additions. Wenn ich mich entscheiden müsste, wären die interessantesten diejenigen, die sich auf unterdrückte Ausnahmen beziehen: -hasSuppresedException() -hasNoSuppresedExceptions()

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

4. Seit dem Release 3.6.0 sind zwei Bugfix-Releases (3.6.1, 3.6.2) erschienen. Können Sie uns etwas mehr darüber erzählen, was dort passiert ist und was behoben werden musste?

In 3.6.1 arbeitetefilteredOn(Predicate) nur mitList, aber nicht mitIterable, ziemlich schlecht.

In 3.6.2 haben wir nicht daran gedacht, Eigenschaften aus der Standard-Getter-Methode von Java 8 zu extrahieren. Es stellte sich heraus, dass dies nach einigen internen Umgestaltungen nicht sofort funktioniert hat.

Ich fragte die Benutzer, ob sie auf die nächste Veröffentlichung warten könnten. Der Bug-Reporter sagte mir, dass er warten dürfe, aber ein anderer Benutzer wollte es, also veröffentlichte ich eine neue Version. We are trying to make AssertJ really community-oriented, da das Schneiden einer Version billig ist (mit Ausnahme des Dokumentationsteils), sehe ich normalerweise keine Probleme beim Freigeben.

5. Sind Sie bei der Arbeit an der neuesten Version auf interessante technische Herausforderungen gestoßen?

Ich werde auf ein Problem hinweisen, auf das ich bei der Arbeit an der nächsten Version 3.7.0 gestoßen bin und das in wenigen Wochen veröffentlicht werden sollte.

Java 8 ist wählerisch in Bezug auf „mehrdeutige“ Methodensignaturen. Wir haben eine neue assertThat-Methode hinzugefügt, dieThrowingCallable benötigt (eine einfache Klasse, bei derCallableeine Ausnahme auslöst). Es stellte sich heraus, dass Java 8 sie mit einer anderenassertThat-Methode verwechselt, die eine nimmt Iterable!

Das war für mich am überraschendsten, da ich keine Unklarheit zwischen den beiden sehe.

6. Planen Sie bald eine neue Hauptversion? Gibt es etwas, das Java 9-Ergänzungen nutzt?

In den nächsten Wochen / einem Monat. We usually try to have releases every few months or when there are major additions.

Pascal Schumacher, der dem AssertJ-Team beigetreten ist, hat einige Arbeiten an Java 9 durchgeführt, um die Kompatibilität zu überprüfen. Einige Dinge funktionieren nicht, hauptsächlich diejenigen, die auf Introspektion beruhen, da Java 9 die Zugriffsregeln ändert. Wir werden eine 4.x-Verzweigung starten, die auf Java 9 fokussiert ist. Dabei folgen wir der gleichen Strategie wie bei 3.x gegenüber 2.x. Wir werden 4.x = 3.x + Java 9-Funktionen haben.

Once 4.0 is officially released we will likely drop 2.x active development, aber akzeptieren Sie weiterhin PRs, da wir nicht in der Lage sind, 3 Versionen synchron zu halten. Ich meine damit, dass wir alle Änderungen von der nx-Version zur n + 1.x-Version melden und daher etwas in 2.x hinzufügen müsste sowohl in 3.x als auch in 4.x gemeldet werden und das ist im Moment zu viel Arbeit.