Java: Testen von privaten Innereien in Java. (seien es private Methoden, die riechen; oder private oder package private Klassen)
Implementiere die Tests als öffenliche Klassen innerhalb der getesteten Klassen bzw. Packages. Die Tests haben Zugriff auf die getestete Klasse und, da sie selbst öffenlich sind, können von außerhalb aufgerufen werden. Java kompiliert die Testklassen in separate Dateien (z.B: GetesteteKlasse$InnereienTest.class), die vor der Auslieferung der Anwendung gelöscht oder von der JarDatei? ausgeschlossen werden können. (Dieses TestMuster? wird z.B. von der NetBeansIDE unterstützt)
Variante: Veröffentliche die zu testenden Teile explizit zum Testen durch eine innere Klasse
public class Foo {
private int bar() {
...
}
public class TestProbe {
public int bar() {
return Foo.this.bar();
}
}
}
benutze in den Tests die reflection-API, um auf nicht öffentliche Teile zuzugreifen.
C++: Testen von privaten inneren Klassen in C++.
Mach den Test zum Freund der gesteten Klasse. Linke die Tests nicht zu der Releaseversion.
C++: Testen von Klassen, die nur in einer Cpp-Datei, nicht aber in einer Headerdatei deklariert sind.
Implementiere die Tests ebenfalls in der Cpp-Datei. Die Auslieferung kann durch die, igitt, Präprozessordirektiven ifdef und Ko. verhindert werden.