es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , ,

Answer

  1. Avatar for 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.

Comments are closed.