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

2 Kommentare

  • 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 ;)

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>