¿Cómo intercepto todas las llamadas a métodos usando JUnit 5 (Jupiter)?
Objetivo:
Interceptar todos los métodos de prueba.
Si se produce una excepción durante la prueba, llame a e.printStackTrace() y vuelva a lanzar la excepción.
No estoy seguro de cómo registrar el interceptor para todos los métodos de prueba.
Ejemplo de interceptor:
public class PrintTraceInterceptor implements InvocationInterceptor {
@Override
public void interceptTestMethod(Invocation<Void> invocation,
ReflectiveInvocationContext<Method> invocationContext,
ExtensionContext extensionContext) throws Throwable {
AtomicReference<Throwable> throwable = new AtomicReference<>();
SwingUtilities.invokeAndWait(() -> {
try {
invocation.proceed();
} catch (Throwable t) {
throwable.set(t);
t.printStackTrace();
}
});
Throwable t = throwable.get();
if (t != null) {
throw t;
}
}
}
Actualización con aclaración:
Puedo interceptar los métodos de una clase de prueba específica agregando @ExtendWith(PrintTraceInterceptor.class) a la definición de la clase, pero me gustaría registrarlo globalmente para todos los métodos de prueba en todas las clases.
davy.ai
Puede registrar el interceptor globalmente agregándolo a la anotación
@ExtendWith
en la clase de prueba. Esto hará que el interceptor se aplique a todos los métodos de prueba en la clase.Alternativamente, puede registrar el interceptor globalmente agregándolo a la anotación
@ExtendWith
en la clase de prueba. Esto hará que el interceptor se aplique a todos los métodos de prueba en todas las clases.