Junit
은 자바에서 많이 사용되는 유닛 테스트 프레임워크이다.
JUnit5는 세가지 하위 프로젝트의 여러 모듈로 구성되어 있다.
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
JUnit5 어노테이션 | 설명 | JUnit4 어노테이션 |
---|---|---|
@Test | 테스트 method임을 선언한다. | @Test |
@ParameterizedTest | 매개변수를 받는 테스트를 작성할 수 있다. | |
@RepeatedTest | 반복되는 테스트를 작성할 수 있다. | |
@TestFactory | @Test 어노테이션을 통해 선언된 정적 테스트가 아닌 동적으로 테스트를 사용한다. | |
@TestTemplate | 공급자에 의해 여러 번 호출될 수 있도록 설계된 테스트 케이스 템플릿을 의미한다. | |
@TestMethodOrder | 테스트 메소드 실행 순서를 구성하는데 사용된다. | |
@DisplayName | 테스트 클래스 또는 메소드의 사용자 정의 이름을 선언할 수 있다. | |
@DisplayNameGeneration | 이름 생성기를 선언할 수 있다. (ex. '_'를 공백문자로 치환해주는 생성기: new_test --> new test) | |
@BeforeEach | 모든 테스트 실행 전에 수행할 테스트에 사용한다. | @Before |
@AfterEach | 모든 테스트 실행 후에 수행할 테스트에 사용한다. | @After |
@BeforeAll | 클래스를 실행하기 전 제일 먼저 실행할 테스트 작성하는데, static로 선언한다. | @BeforeClass |
@AfterAll | 현재 클래스 종료 후 해당 테스트를 실행하는데, static으로 선언한다. | @AfterClass |
@Nested | 정적이 아닌 중첩 테스트 클래스임을 나타낸다. | |
@Tag | 클래스 또는 메소드 레벨에서 태그를 선언할 때 사용한다. (메이븐을 사용할 경우 설정에서 테스트를 태그를 인식해 포함하거나 제외시킬 수 있다.) | |
@Disabled | 사용하지 않음을 표시한다. | @Ignore |
@Timeout | 테스트 실행 시간을 설정할 수 있는 어노테이션으로, 설정한 시간을 초과하면 테스트를 실패한 것으로 간주한다. | |
@ExtendWith | 확장을 선언적으로 등록할 때 사용한다. | |
@RegisterExtension | 필드를 통해 프로그래밍 방식으로 확장을 등록할 때 사용한다. | |
@TempDir | 필드 주입 또는 매개변수 주입을 통해 임시 디렉토리를 제공하는데 사용한다. |
org.junit.jupiter.api.Assetions
클래스에 static
으로 정의되어 있다.AssertionError
를 throw
한다.assertEquals(int expected, int actual, String message?)
assertEquals(float expected, float actual, float delta?, String message?)
equals
를 통해 비교한다는 점을 주의해야 한다.assertSame(Object expected, Object actual, String message?)
assertTrue(boolean condition, String message?)
assertNull(Object actual, String message?)
assertTimeout(Duration timeout, Executable executable, String message?)
assertTimeoutPreemptively
메소드로 해결 가능 (테스트를 먼저 실행하고 timeout 시간이 지나면 테스트를 종료시키는 메소드이다.)참고
JUnit5 docs
[10분 테코톡]🌊 바다의 JUnit5 사용법
Junit5 필수 개념 정리 (JAVA)
Assertion docs
JUnit - Assert Methods(1)