1.JUnit은 무엇인가?
JUnit은 자바 개발자가 가장 많이 사용하는 테스트 프레임워크이다.
JUnit5는 4에서 5로 넘어오면서 여러개의 서브모듈로 나뉘었다 중요한 것들만 살펴보자면 다음과 같다.
- Junit Platform
- junit 테스트를 진행하기 위한 TestEngine API을 제공한다.
- Junit Jupiter
- JUnit5의 TestEngine API의 구현체
- Junit Vintage
- JUnit3과 JUnit4의 TestEngine API 구현체
2.Junit은 어떻게 사용하는가?
다음과 같이 IntelliJ 에서 gradle 기반으로 프로젝트를 생성하면 자동으로 JUnit4가 의존성 추가가 된다.
우리가 사용할 JUnit은 5 버전이기 때문에 MVNRepository를 접속해서 최신 안정화된 JUnit5버전을 찾아 해당 위치에 의존성을 추가한다.
예제
class AppTest {
@BeforeAll
static void testBeforeAll() {
System.out.println("before all");
}
@AfterAll
static void testAfterAll() {
System.out.println("after all");
}
@BeforeEach
void testBeforeEach() {
System.out.println("before each");
}
@AfterEach
void testAfterEach() {
System.out.println("after each");
}
@Test
@DisplayName("테스트1")
void testName1() {
assertArrayEquals(new int[]{1, 2, 3, 4, 5}, new int[]{1, 2, 3, 4, 5});
}
@Test
@DisplayName("테스트2")
void testName2() {
System.out.println("22222222");
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(1);
list2.add(2);
list2.add(3);
assertIterableEquals(list1, list2);
}
@Test
void testName3() {
assertAll(
() -> assertEquals(3, 3,"3 이 아닙니다."),
() -> assertEquals("3", "3"),
() -> assertTrue(true)
);
System.out.println("33333333");
}
@Test
void testName4() {
int[] arr = new int[10];
assertThrows(
IndexOutOfBoundsException.class,
() -> {
int a = arr[9];
},
()-> {
System.out.println("에러발생");
return "this is error";
}
);
System.out.println("44444444");
}
}
3.JUnit5 기본 문법
@Test
- 해당 메소드를 테스트케이스에 포함시킨다는 의미이다.
@BeforeAll
- 모든 테스트 케이스가 실행 되기 전에 실행되는 메소드이다.
- static 제어자를 붙여야 사용할 수 있다.
@AfterAll
- 모든 테스트 케이스가 실행 된 후에 실행되는 메소드이다.
- static 제어자를 붙여야 사용할 수 있다.
@BeforeEach
- 각각의 테스트 케이스가 실행 되기 전에 실행되는 메소드이다.
@AfterEach
- 각각의 테스트 케이스가 실행 된 후에 실행되는 메소드이다.
@DisplayName
- 내가 원하는 테스트의 이름을 지어줄 수 있다.
4.JUnit5 Assertions
다양한 assertions가 있지만 해당 메소드만 있어도 대부분의 테스트를 완료 할 수 있다.
assertEquals(expected, actual)
- 기대한 값이 실제 값과 일치하는지 확인한다.
assertArrayEquals(expected, actual)
- 기대한 배열의 값이 실제 배열의 값과 일치하는지 확인한다.
assertIterableEquals(expected, actual)
- 기대한 iterable 자료구조의 값이 실제 iterable 자료구조의 값과 일치하는지 확인한다.
assertNotNull(actual)
- 기대한 값이 null이 아닌지 확인한다.
assertTrue(boolean)
- 기대한 값이 참인지 확인한다.
assertAll(executable...)
- 여러개의 케이스를 하나로 묶어 테스트 하는데 사용한다.
assertThrows(expectedType, executable)
- 기대한 예외를 던지는지 확인한다.
해당 테스트 assert의 마지막 파라미터로 String 값을 대입하면 해당 테스트 에러 발생시 대입한 String값이 출력된다.
비슷하게 assert의 마지막 파라미터로 executable한 것을 대입하면 해당 테스트 에러 발생 시 작성한 문장이 실행된다.
'Java > STUDY HALLE' 카테고리의 다른 글
[Java] 선형 자료구조 (0) | 2020.12.07 |
---|---|
[Java] GitHub Library 사용법 (0) | 2020.12.06 |
[Java] 제어문 (0) | 2020.12.05 |
[Java] 연산자 (1) | 2020.11.27 |
[Java] 데이터타입, 변수, 배열 (0) | 2020.11.21 |