En JUnit 5 TestInfo
actúa como un reemplazo directo para la regla TestName de JUnit 4.
De la documentación:
TestInfo se usa para inyectar información sobre la prueba o el contenedor actual en los métodos @Test, @RepeatedTest, @ParameterizedTest, @TestFactory, @BeforeEach, @AfterEach, @BeforeAll y @AfterAll.
Para recuperar el nombre del método de la prueba ejecutada actual, tiene dos opciones: String TestInfo.getDisplayName()
y
Method TestInfo.getTestMethod()
.
Para recuperar solo el nombre del método de prueba actual TestInfo.getDisplayName()
puede no ser suficiente ya que el nombre para mostrar predeterminado del método de prueba es methodName(TypeArg1, TypeArg2, ... TypeArg3)
.
Duplicar nombres de métodos @DisplayName("..")
no es necesariamente una buena idea.
Como alternativa, podría usar
TestInfo.getTestMethod()
eso que devuelve un Optional<Method>
objeto.
Si el método de recuperación se usa dentro de un método de prueba, ni siquiera necesita probar el Optional
valor ajustado.
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.api.Test;
@Test
void doThat(TestInfo testInfo) throws Exception {
Assertions.assertEquals("doThat(TestInfo)",testInfo.getDisplayName());
Assertions.assertEquals("doThat",testInfo.getTestMethod().get().getName());
}