В JUnit 5 TestInfo
выступает в качестве замены для правила TestName из JUnit 4.
Из документации:
TestInfo используется для ввода информации о текущем тесте или
контейнер в @Test, @RepeatedTest, @ParameterizedTest,
@TestFactory, @BeforeEach, @AfterEach, @BeforeAll и @AfterAll
методы.
Чтобы получить имя метода текущего выполненного теста, у вас есть две опции: String TestInfo.getDisplayName()
и
Method TestInfo.getTestMethod()
.
Для извлечения только имени текущего метода тестирования TestInfo.getDisplayName()
может быть недостаточно, поскольку отображаемое имя метода тестирования по умолчанию - methodName(TypeArg1, TypeArg2, ... TypeArg3)
.
Дублирование имен методов в @DisplayName("..")
не является хорошей идеей.
В качестве альтернативы вы можете использовать
TestInfo.getTestMethod()
, который возвращает Optional<Method>
объект.
Если метод извлечения используется внутри тестового метода, вам даже не нужно проверять Optional
упакованное значение.
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());
}