В Юнит 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>
объект.
Если метод извлечения используется внутри метода test, вам даже не нужно проверять 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());
}