java - test - Cómo hacer JUnit para imprimir aserciones y resultados.
junit tutorial (3)
Primero, tienes dos problemas no uno. Cuando una aserción falla, se lanza una excepción AssertionError
. Esto evita que se verifique cualquier afirmación pasada este punto. Para solucionar esto, necesita utilizar un ErrorCollector .
En segundo lugar, no creo que haya ninguna forma incorporada a JUnit para hacer esto. Sin embargo, podría implementar sus propios métodos que envuelven las aserciones:
public static void assertNotNull(String description, Object object){
try{
assertNotNull(description, object);
System.out.println(description + " - passed");
}catch(AssertionError e){
System.out.println(description + " - failed");
throw e;
}
}
Tengo algunas pruebas como esta:
@Test
public void test01()
{
Position p = getPositionAt(''a'', 1);
assertNotNull("a1 exists", p);
assertNotNull("figure exists a1", p.getFigure());
p = getPositionAt(''a'', 2);
assertNotNull("exists a2", p);
assertNull("figure exists a2", p.getFigure());
p = getPositionAt(''b'', 1);
assertNotNull("exists b1", p);
assertNull("figure exists b1", p.getFigure());
}
Lo que necesito al ejecutar las pruebas es imprimir cada mensaje de afirmación a la salida estándar y luego el resultado de la afirmación.
Este es el formato requerido de la clase de prueba:
a1 exists -success
figure exists a1 -success
exists a2 -success
figure exists a2 -succcess
exists b1 -succcess
figure exists b1 -failed
Pero, ¿cómo hacer eso? Soy bastante nuevo trabajando con JUnit y no tengo idea. ¿Hay manera de usar runners
y suites
? ¿O existe algún assertSuccess()
, assertFailed()
? Gracias por cualquier pista.
Todos los métodos de assertXXX tienen un formulario que permite mostrar una cadena en caso de error:
assertNotNull("exists a2", p); // prints "exists a2" if p is null
No hay un valor particular en la impresión de un mensaje en caso de éxito.
EDITAR
Junit proporciona típicamente 2 formas de una afirmación. Para seguir el ejemplo anterior, puede probar un valor nulo en 1 de 2 formas:
assertNotNull(p)
o
assertNotNull("my message on failure", p)
El marco imprimirá los mensajes de error sin ningún otro esfuerzo requerido por usted (es proporcionado por el marco).
Para probar las excepciones, usaría el siguiente patrón:
try{
someCall();
catch(Exception e){
fail(): // exception shouldn''t happen, use assertTrue(true) if it should
}
Nuevamente, hay versiones de estos métodos para agregar un mensaje.
Comprueba la API
Una última opción es emparejar cada aseveración con un System.out.println
correspondiente, aunque obviamente eso no es lo ideal. Aún así, resolverá el problema si todo lo demás falla.