No hay una buena manera de hacer esto, y no vale la pena de todos modos. Asumo que el StackTrace impresa está viniendo del código de llamada, y no de su código de prueba:
public class ExpectedExceptionTest {
@Test(expected = IOException.class)
public void test() throws Exception {
foobar();
}
public void foobar() throws IOException {
try {
throw new IOException();
} catch (IOException e) {
e.printStackTrace(System.err);
throw e;
}
}
}
Aquí, el StackTrace que aparece en el registro de Maven build viene de la gestión de errores del método que usted' Estoy tratando de probar. No desea cambiar este manejo de error. Si la prueba falla, entonces quieres saber qué pasó.
Si lo cambia, también complicará el código bajo prueba innecesariamente. Además de esta prueba específica, siempre quieres que aparezca la pila.
Entonces, ¿podemos establecer que System.err sea nulo, como se sugirió en otra parte? No. Si usted llama
System.setErr(null);
A continuación, esto se traducirá en una NullPointerException
(con el manejo de error anterior).
Si usa log4j o similar para su registro, entonces puede tener un @Rule
que establece temporalmente el nivel de registro en INFO para que la excepción no aparezca en sus registros. De nuevo, la depuración no aparecerá cuando más lo necesite, si la prueba falla.
Obtengo estas trazas de pila de excepción todo el tiempo en mi (s) salida (s) de compilación del proyecto. Yo sólo acepto y felicito a mí mismo que estoy probando las condiciones de error correctamente :-)
Tengo el mismo problema. Tenemos pruebas unitarias que por el bien de la cobertura del código intentan inducir excepciones de nuestro código. En general me gusta que nuestra cobertura de código sea alta, pero todos los rastros de pila en la salida son muy molestos. Tener una función incorporada en junit sería bastante agradable, especialmente si pudieras controlar el comportamiento de la anotación. +1 –
http://stackoverflow.com/questions/156503/how-do-you-assert-that-a-certain-exception-is-thrown-in-junit-4-tests - Use la regla de Junction ExpectedException. – JeeBee
Esto me irrita también. –