Trong JUnit 5 TestInfo
hoạt động như một sự thay thế thả xuống cho quy tắc TestName từ JUnit 4.
Từ tài liệu:
TestInfo được sử dụng để đưa thông tin về thử nghiệm hiện tại hoặc vùng chứa vào các phương thức @Test, @RepeatTest, @ParameterizedTest, @TestFactory, @B BeforeEach, @AfterEach, @B BeforeAll và @AfterAll.
Để lấy tên phương thức của kiểm tra thực hiện hiện tại, bạn có hai tùy chọn: String TestInfo.getDisplayName()
và
Method TestInfo.getTestMethod()
.
Để chỉ truy xuất tên của phương thức thử nghiệm hiện tại TestInfo.getDisplayName()
có thể không đủ vì tên hiển thị mặc định của phương thức thử nghiệm là methodName(TypeArg1, TypeArg2, ... TypeArg3)
.
Sao chép tên phương thức trong @DisplayName("..")
không cần thiết là một ý tưởng tốt.
Thay thế, bạn có thể sử dụng
TestInfo.getTestMethod()
trả về một Optional<Method>
đối tượng.
Nếu phương thức truy xuất được sử dụng bên trong phương thức kiểm tra, bạn thậm chí không cần kiểm tra Optional
giá trị được bọc.
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());
}