Cobertura: Private Konstruktoren testen

veröffentlicht am 18. September 2011

Ich bin gerade dabei, ein Projekt von mir mit allen erdenklichen Quellcodeanalysen zu befeuern. Nachdem ich alle Checkstyle-Warnungen entfernt hatte, habe ich mich mit Cobertura an die Testabdeckung gemacht. Dabei stieß ich auf das Problem, dass Cobertura mir anmeckerte, dass ich den privaten Konstruktor einer Utility-Klasse nicht getestet habe. Nach kurzer Recherche im Internet habe ich eine Lösung für das Problem gefunden. Das Zauberwort hierfür lautet: Reflection.

Meine Tests ziehe ich mit TestNG auf. Zum Testen eines privaten Konstruktors nimmt man folgenden Code:

@Test
public final void privateConstructorTest() throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException {
	Constructor<?> con = FooBar.class.getDeclaredConstructors()[0];
	con.setAccessible(true);
	Assert.assertNotNull(con.newInstance());
}

Beachte, dass du den Klassennamen (hier FooBar) an deine Bedürfnisse anpassen musst.

Kommentare

ich kenne Cobertura nicht, aber was bringt dieser Test dir jetzt? :-)

Kommentar #1 von Basti am 19. September 2011


Der Test bringt mir, dass ich auch den privaten Konstruktor getestet habe und damit die Testabdeckung steigt. Ich wollte einfach mal 100% Testabdeckung rauskitzeln ;)

Kommentar #2 von Patrick am 19. September 2011


Hinterlasse einen Kommentar