Mutability Detector

Das Schreiben von unveränderbaren (Immutable) Klassen bietet viele Vorteile, z. B. bei der nebenläufigen Programmierung. Der Zustand von Instanzen aus unveränderbaren Klassen kann nach der Erzeugung nicht mehr verändert werden. Java bietet dafür keine native Unterstützung, man muß stattdessen bei der Erstellung solcher Klassen ein bestimmten Bauplan einhalten, kann dabei aber trotzdem noch einiges falsch machen.

Mit dem Mutability Dectector gibt es nun ein Tool, welches Java Klassen auf Immutability überprüft. Es kann auf der Kommandozeile ausgeführt, in Java-Anwendung oder auch in Unit-Tests integriert werden:

 import static org.mutabilitydetector.unittesting.MutabilityAssert.assertImmutable;

 @Test public void checkMyClassIsImmutable() {
     assertImmutable(MyClass.class);
 }

Wenn Klassen zwar immutable sein sollen, aber der Bauplan aufgrund von nötigen Hintertürchen nicht strikt eingehalten werden kann, kann man die Test-Erwartungen sogar entsprechend aufweichen.

 import static org.mutabilitydetector.unittesting.MutabilityAssert.assertInstancesOf;
 import static org.mutabilitydetector.unittesting.MutabilityMatchers.areEffectivelyImmutable;
 import static org.mutabilitydetector.unittesting.AllowedReason.allowingForSubclassing;

 @Test public void checkMyClassIsImmutable() {
     assertInstancesOf(AbstractSuperClass.class, areEffectivelyImmutable(), allowingForSubclassing());
 }

Mutability Detector befindet sich noch in einem frühen Entwicklungsstadium, ist aber bereits unter der Apache License 2.0 veröffentlicht.

Short URL for this post: https://wp.me/p4nxik-Pb
This entry was posted in Java and Quality and tagged , . Bookmark the permalink.

Leave a Reply