Cobertura: Private Konstruktoren testen
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.
Veröffentlicht am 18.09.2011

Basti schrieb am 19. September 2011
ich kenne Cobertura nicht, aber was bringt dieser Test dir jetzt?
Patrick schrieb 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