En muchas aplicaciones, a menudo tengo algoritmos que hacen uso de sub-algoritmos dedicados (o simplemente fragmentos de código bien definidos).¿Cómo pruebo los métodos internos de la clase interna en Java?
Hasta ahora, cuando escribí el algoritmo principal, he creado un método privado para cada sub-algoritmo, como en el ejemplo siguiente (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;
}
}
Esto funcionó bien, pero no me gustó tener una proliferación de métodos (subAlg01 y subAlg02) que, incluso si eran privados, solo se usaban por un método (mainAlg).
Recientemente dicovered el uso de clases internas locales y ahora mi ejemplo es (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;
}
}
me gusta mucho, pero ahora tengo el siguiente problema: ¿Cómo se prueba subAlg01 y subAlg02 usando JUnit?
Por cierto: estoy usando eclipse.
Gracias por su ayuda.
Editar: Intento explicar mejor: tengo, digamos, un algoritmo de clasificación y quiero probarlo para asegurarme de que funciona como se esperaba. Este algoritmo de clasificación es utilizado solo por el método m de la clase X. Podría convertirlo en un método privado de clase X, pero la clase X generalmente no tiene nada que ver con la ordenación, entonces ¿por qué "echar a perder" la clase X con el método de clasificación? Entonces lo puse dentro del método m. Algún tiempo después, quiero mejorar mi algoritmo de clasificación (lo hago más rápido), pero quiero asegurarme de que su comportamiento sea el esperado, por lo que quiero volver a probarlo con las pruebas originales.
Eso es lo que quiero hacer, quizás no haya solución, espero que alguien me pueda ayudar.
Editar después de la elección de respuesta. Seleccioné la respuesta de Rodney porque su solución fue la que adopté: una clase de ayudante independiente me ayuda (¡es una ayuda!) A tener una visión clara de cuáles son los métodos secundarios y también me da la capacidad de probarlos.
I eliminó la etiqueta de Eclipse ya que este problema no es específico de ella. –