No JUnit 5 TestInfo
atua como um substituto para a regra TestName da JUnit 4.
A partir da documentação:
TestInfo é usado para injetar informações sobre o teste ou contêiner atual nos métodos @Test, @RepeatedTest, @ParameterizedTest, @TestFactory, @BeforeEach, @AfterEach, @BeforeAll e @AfterAll.
Para recuperar o nome do método do teste executado atualmente, você tem duas opções: String TestInfo.getDisplayName()
e
Method TestInfo.getTestMethod()
.
Recuperar apenas o nome do método de teste atual TestInfo.getDisplayName()
pode não ser suficiente, pois o nome de exibição padrão do método de teste é methodName(TypeArg1, TypeArg2, ... TypeArg3)
.
Duplicar nomes de métodos @DisplayName("..")
não é uma boa idéia.
Como alternativa, você pode usar
TestInfo.getTestMethod()
isso retorna um Optional<Method>
objeto.
Se o método de recuperação for usado dentro de um método de teste, você nem precisará testar o Optional
valor agrupado.
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());
}