2012-09-18 22 views
6

Hola, estoy intentando probar mis 3 clases que ordenan matrices de cadenas de diferentes maneras.SetUp, initilize Junit testing

Sé que hay un método que inyecta una matriz y luego las usa en cada una de mis pruebas.

Hasta ahora, este es mi código:

public class SortingTest { 

    public insertionSort is = new insertionSort(); 
    public bubbleSort bs = new bubbleSort(); 
    @Test 
    public void testBubbleSort() { 
     String [] sortedArray ={"Chesstitans", "Ludo", "Monkey", "Palle"}; 
     bs.sort(sortedArray); 
     assertArrayEquals(sortedArray, x); 
    } 
    @Test 
    public void testInsertionSort() { 


    } 
    @Test 
    public void testMergeSort() { 


    } 
    @Test 
    public void testSelectionSort() { 


    } 
    @Before 
    protected void setUp() throws Exception{ 
     String[]x ={"Ludo", "Chesstitans", "Palle", "Monkey"}; 
    } 

} 

Eventhough He intentado tanto SETUP y método initilize, duerma parecen encontrar x lo que he hecho mal?

Saludos

Marc Rasmussen

Respuesta

8

que necesita para hacer x una variable miembro de la clase SortingTest

public class SortingTest { 

    private String[] x; 

    @Before 
    public void init() { 
     x = new String {"Ludo", "Chesstitans", "Palle", "Monkey"}; 
    } 
} 
+0

así que necesito iniciarlo como una variable pública? ¿Eso no arruina todo el punto de inicio del método? –

+0

si lo hago así y ordena la matriz x por primera vez. ¿No serán inútiles todas mis otras pruebas porque la matriz ya está ordenada? –

+0

¡1 arreglo a su código pero de otra manera era perfecto! : D x = new String [] {"Ludo", "Chesstitans", "Palle", "Monkey"}; –

2

setUp debe inicializar algunos campo miembros para que otros métodos tienen acceso a ella . Si inicializa una variable local, se perderá cuando salga de la variable setUp.

En este caso, lo bueno sería tener dos miembros:

  • originalArray
  • sortedArray

En cada método de prueba que podría ordenar la originalArray y comparar el resultado con el que ya sortedArray.

+0

Exactamente esto es lo que quiero, pero ¿tengo que hacerlo en cada método de clasificación individual? ¿No hay alguna manera de que lo inicie cada vez que utiliza un nuevo método? –

+0

Si no recuerdo mal, es de esa manera. Se llama a setUp antes de cada ejecución del método (incluso no estoy seguro si el objeto de prueba se crea nuevamente con cada método de prueba). Inicialícelos en setUp y úselos libremente. – helios

+0

De hecho @munyengm tiene razón, podría asignar los valores directamente en la declaración del miembro sin la necesidad de un método setUp. – helios

0

Tiene que hacer que x sea miembro de una clase, de modo que sea visible en todos los métodos.