In vielen Anwendungs habe ich oft Algorithmen, die Verwendung von speziellen Sub-Algorithmen (oder einfach gut definierte Teile des Codes) zu machen.Wie teste ich lokale innere Klassenmethoden in Java?
Bis jetzt, wenn ich den Hauptalgorithmus schrieb, habe ich eine private Methode für jeden Teilalgorithmus wie im Beispiel unten (OldStyle):
public class OldStyle {
public int mainAlg() {
int x = subAlg01();
int y = subAlg02();
int z = x * y;
return z;
}
private int subAlg01() {
return 3;
}
private int subAlg02() {
return 5;
}
}
Das funktionierte gut, aber ich wusste nicht, wie mit eine Proliferation von Methoden (subAlg01 und subAlg02), die, wenn auch privat, nur von einer Methode (mainAlg) verwendet wurden.
Kürzlich dicovered ich die Verwendung von lokalen inneren Klassen und jetzt ist mein Beispiel ist (NewStyle):
public class NewStyle {
public int mainAlg() {
class Nested {
public int subAlg01() {
return 3;
}
public int subAlg02() {
return 5;
}
}
Nested n = new Nested();
int x = n.subAlg01();
int y = n.subAlg02();
int z = x * y;
return z;
}
}
Ich mag es sehr viel, aber jetzt habe ich folgendes Problem: Wie teste ich subAlg01 und subAlg02 mit JUnit?
By the way: Ich bin mit Eclipse.
Danke für Ihre Hilfe.
Bearbeiten: Ich versuche, besser zu erklären: Ich habe, sagen wir, einen Sortieralgorithmus und ich möchte es testen, um sicherzustellen, dass es wie erwartet ausgeführt wird. Diese Sortieralgorithmen werden nur von der Methode m der Klasse X verwendet. Ich könnte sie zu einer privaten Methode der Klasse X machen, aber Klasse X hat normalerweise nichts mit Sortierung zu tun, also warum die Klasse X mit der Sortiermethode "verderben"? Also lege ich es in Methode m. Einige Zeit später möchte ich meinen Sortieralgorithmus verbessern (ich mache es schneller), aber ich möchte sicher sein, dass das Verhalten wie erwartet ist, also möchte ich es mit den ursprünglichen Tests erneut testen.
Das ist, was ich tun will, vielleicht ist es keine Lösung, ich hoffe, dass jemand mir helfen kann.
bearbeiten nach Antwort Wahl. Ich wählte die Antwort von Rodney aus, weil seine Lösung die ist, die ich adoptiert habe: Eine eigenständige Hilfsklasse hilft mir (es ist ein Helfer!), Eine klare Sicht auf die Submethoden zu haben und gibt mir auch die Möglichkeit, sie zu testen.
I Das Eclipse-Tag wurde entfernt, da dieses Problem nicht spezifisch dafür ist. –