2010-08-11 15 views
32

Mi intención es utilizar el método JUnit assertArrayEquals(int[], int[]) descrito en the API para la verificación de un método en mi clase.Uso de assertArrayEquals en pruebas unitarias

Pero Eclipse me muestra el mensaje de error que no puede reconocer dicho método. Esas dos importaciones están en su lugar:

import java.util.Arrays; 
import junit.framework.TestCase; 

¿Echo de menos algo?

+0

¿Qué versión de JUnit que está utilizando? ¿Has usado afirmaciones JUnit antes? ¿Estás seguro de que deseas pruebas unitarias y no p. 'java.util.Arrays.equals/deepEquals' methods? – polygenelubricants

+0

Francamente, no sé qué versión de JUnit estoy usando, pero sé que he descargado la versión de Eclipse: 3.5.1 y se incluyó JUnit. No he estado usando aserciones JUnit antes, solo estoy aprendiendo. Y sí, quiero pruebas unitarias. – Eugene

+0

Descubrí que es JUnit3. – Eugene

Respuesta

42

Esto debería funcionar con JUnit 4:

import static org.junit.Assert.*; 
import org.junit.Test; 

public class JUnitTest { 

    /** Have JUnit run this test() method. */ 
    @Test 
    public void test() throws Exception { 

     assertArrayEquals(new int[]{1,2,3},new int[]{1,2,3}); 

    } 
} 

(respuesta se basa en this wiki article)


Y esto es lo mismo para el marco de JUnit de edad (JUnit 3):

import junit.framework.TestCase; 

public class JUnitTest extends TestCase { 
    public void test() { 
    assertArrayEquals(new int[]{1,2,3},new int[]{1,2,3}); 
    } 
} 

Tenga en cuenta la diferencia: no Anotaciones y la clase de prueba es una subclase de TestCase (que implementa th e métodos de afirmación estática).

+1

Es JUnit3 , pero obtengo el mensaje: Descripción \t Recurso \t Ruta \t Ubicación \t Tipo El método assertArrayEquals (int [], int []) no está definido para el tipo DeckTest – Eugene

+0

¿está extendiendo TestCase? Por favor, publique código de muestra que muestre la clase en cuestión. –

+1

@AndoidNoob - Assert @ assertArrayEquals ha sido presentado con JUnit 4. Por lo tanto, debe cambiar a JUnit 4 (siempre recomendado) o verificar la igualdad de matrices con varias sentencias de Java (recorrer la matriz después de asegurarse, son de el mismo tamaño) –

5

intenta agregar:

import static org.junit.Assert.*; 

assertArrayEquals es un método estático.

0

Si está escribiendo pruebas de estilo JUnit 3.x que extienden TestCase, entonces no necesita usar el calificador Assert - TestCase se extiende a Assert y por lo tanto estos métodos están disponibles sin el calificador.

Si usa las anotaciones JUnit 4, evitando la clase base TestCase, se necesita el calificador Assert, así como la importación org.junit.Assert. Puede usar una importación estática para evitar el calificador en estos casos, pero algunos consideran que es poor style.

28

Esto podría ser útil si desea utilizar sólo assertEquals sin depender de la versión Junit

assertTrue(Arrays.equals(expected, actual));