2012-09-19 19 views
7

Acabo de notar que jUnit 4.8.1 no incluye soporte para probar dos matrices booleanas para la igualdad. Hay toneladas de otros assertArrayEquals pero ninguno para tomar en dos matrices booleanas.jUnit probando dos matrices booleanas

¿Hay una forma adecuada de hacerlo? Mi pensamiento actual es que tendría que iterar sobre una matriz y usar algo como

Assert.assertTrue(arrayOne[i] == arrayTwo[i]); 

¿Hay una forma más limpia de hacer esto?

+0

No, usted compara las referencias – Ilya

+2

'assertTrue (Arrays.equals (array1, array2));' –

Respuesta

9

Puede usar Arrays.equals() para comparar las dos matrices y luego afirmar que son equivalentes.

Assert.assertTrue(Arrays.equals(arrayOne, arrayTwo)); 

Arrays.equals() comprueba la longitud y cada elemento de la matriz, por lo que no tendrá que preocuparse por la iteración en cada matriz. También hay Assert.assertArrayEquals, que le dará la posición exacta en la que difieren los arreglos

Ejemplo: para una prueba escrita como tal:

@Test 
public void doArrayTest() { 
    int[] foo = {1, 2, 3}; 
    int[] bar = {4, 5, 6}; 
    assertArrayEquals(foo, bar); 
} 

El resultado sería:

arrays first differed at element [0]; expected:<1> but was:<4> 

Expected :1 
Actual :4 
+0

Perfecto, gracias! –

+0

El problema con esto es que su diagnóstico no le dirá qué está mal si las matrices son diferentes, tendrá que trabajar más para descubrir por qué son diferentes – tddmonkey

2

La funcionalidad se ha añadido en JUnit 4,12, que fue lanzado en diciembre de 2014.

assertArrayEquals(boolean[] expecteds, boolean[] actuals) 
assertArrayEquals(String message, boolean[] expecteds, boolean[] actuals) 

Como referencia: este es el PR que contiene la confirmación: https://github.com/junit-team/junit/pull/632